Javascript Spring MVC将带有延迟加载字段的hibernate对象返回给AjaxResponseBuilder
假设我有一个Person对象:Javascript Spring MVC将带有延迟加载字段的hibernate对象返回给AjaxResponseBuilder,javascript,ajax,hibernate,spring-mvc,lazy-loading,Javascript,Ajax,Hibernate,Spring Mvc,Lazy Loading,假设我有一个Person对象: String name = "bob"; Int number = 3; String lastName = ? lastName字段是用Hibernate延迟加载的。当我想 AjaxResponseBuilder builder = AjaxResponseBuilder.success(); builder.addData("person", Person"); 我得到一个HibernateLazyLoad异常,因为尚未获取lastName。有
String name = "bob";
Int number = 3;
String lastName = ?
lastName字段是用Hibernate延迟加载的。当我想
AjaxResponseBuilder builder = AjaxResponseBuilder.success();
builder.addData("person", Person");
我得到一个HibernateLazyLoad异常,因为尚未获取lastName。有没有一种方法可以无例外地传递对象的其余部分?到目前为止,我只需将lastName设置为null并传递对象即可,但这似乎是一种解决方法,而不是一种解决方案。似乎AjaxResponseBuilder想要访问Person对象的lastName字段(可能它只是覆盖了所有字段)。您有以下选择:
Hibernate.initialize(person);
openSessionInViewFilter
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
openSessionInViewFilter
/*
如果AjaxResponseBuilder有某种配置告诉它从查找中忽略lastName字段,那么这也应该起作用。什么是AjaxResponseBuilder?@bhantol它是一个Spring,用于在Java中构建对Ajax请求的响应会话已经关闭。您可能需要配置
OpenSessionInViewFilter
,使会话对当前线程保持打开状态。@Bart如果我不需要lazyload属性怎么办?我只想在没有懒洋洋的场地上通过它?
<filter>
<filter-name>openSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>