spring data jpa使用懒操作
2015-09-01 15:58
435 查看
如果model对象的某属性使用lazy load,调用这个属性时会报错, failed to lazily initialize a collection of role could not initialize proxy - no Session
查了一圈,得到两个方案
a) 放弃懒操作,改lazy为eager
可是,如果我只需要一个姓名,却把人的家谱都翻出来了,很浪费很无效啊。
b) 使用OpenSessionInViewFilter
配置的时候,发现不能用,因为他需要sessionfactory的bean名,而Spring Data JPA把它封装到entityManagerFactory 里了……
但是,这个框架应该会给出对应的过滤器吧~
嗯, OpenEntityManagerInViewFilter 浮出水面,亲测not working
捯饬了好久好久,找到一篇讨论
看到末尾,楼主说:At the moment I give up, I cannot spend more time on this...心声啊~~
讨论中有人建议使用openEntityManagerInViewInterceptor
于是,终于写正文了。
1. 先定义bean
1 <bean name="openEntityManagerInViewInterceptor"
2 class="org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor">
<property name="entityManagerFactory">
<ref bean="entityManagerFactory" />
</property>
</bean>
2. 为这个默认的注解处理映射加入拦截器bean以自动生成会话
<bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="openEntityManagerInViewInterceptor" />
</list>
7 </property>
</bean>
3. 加入事务
使用一个东西却无效的时候,要去看文档,了解它有哪些属性啊,才更可能看出自己的纰漏。不能死盯着错误查,一直待在死胡同里。
若使用@Response ,记得给相应的集合加@JsonIgnore,不然会因为死循环而崩溃的~
一定要用过滤器可以参考
http://20365.cn/article/17或许有帮助(有反馈就好了
查了一圈,得到两个方案
a) 放弃懒操作,改lazy为eager
可是,如果我只需要一个姓名,却把人的家谱都翻出来了,很浪费很无效啊。
b) 使用OpenSessionInViewFilter
配置的时候,发现不能用,因为他需要sessionfactory的bean名,而Spring Data JPA把它封装到entityManagerFactory 里了……
但是,这个框架应该会给出对应的过滤器吧~
嗯, OpenEntityManagerInViewFilter 浮出水面,亲测not working
捯饬了好久好久,找到一篇讨论
看到末尾,楼主说:At the moment I give up, I cannot spend more time on this...心声啊~~
讨论中有人建议使用openEntityManagerInViewInterceptor
于是,终于写正文了。
1. 先定义bean
1 <bean name="openEntityManagerInViewInterceptor"
2 class="org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor">
<property name="entityManagerFactory">
<ref bean="entityManagerFactory" />
</property>
</bean>
2. 为这个默认的注解处理映射加入拦截器bean以自动生成会话
<bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="openEntityManagerInViewInterceptor" />
</list>
7 </property>
</bean>
3. 加入事务
使用一个东西却无效的时候,要去看文档,了解它有哪些属性啊,才更可能看出自己的纰漏。不能死盯着错误查,一直待在死胡同里。
若使用@Response ,记得给相应的集合加@JsonIgnore,不然会因为死循环而崩溃的~
一定要用过滤器可以参考
http://20365.cn/article/17或许有帮助(有反馈就好了
相关文章推荐
- WIN7 64位安装jdk,javac出错
- spring jdbc的使用
- 使用Java获取IP地址实例
- HashMap java.util.ConcurrentModificationException
- 出现 java.util.ConcurrentModificationException
- Java递归 遍历目录的小例子
- 经典算法之图的最短路径(一):Dijkstra算法
- java的indexOf(String.indexOf 方法)
- Java线程池
- SendEmail java发送邮件
- Java 中 array 用法
- java 读取txt文件和xls文件
- Assertion in void __stdcall mwJavaAbort(void)
- MyEclipse 8.5 Axis2 插件完整jar包
- hihocoder #1040 : 矩形判断 #java
- Web filter中如何引用Spring的bean
- Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V Exception details are logged
- 使用Spring进行面向切面(AOP)编程
- Spring笔记——使用Spring进行面向切面(AOP)编程
- Spring 依赖注入(DI)