JPA中多对多关联延迟加载问题,failed to lazily initialize a collection of role

来源:互联网 发布:苹果手机壁纸制作软件 编辑:程序博客网 时间:2024/05/25 01:35

问题场景:

我使用quartz触发一个定时任务,该任务是从一个多对多的实体中关联出来数据并进行处理,由于调度的定时器每次执行都会重新实例化,所有在调度任务中无法延迟加载关联对象,此时或许去掉延迟加载可以解决这个问题,但后果是性能的大幅降低;这时考虑到的一种方案,但具有一定的适用场景,就是对数据是过滤查找即按条件查找特定数据,并非全部数据时刻考虑这种办法,其实现思路大概如下:

假如A和B是多对多的关系,我取出A后需要在调度中处理关联对象B,这个B取到的是一个集合,在不去点延迟的情况下可以在DAO层获取数据时,将被关联的集合对象重新取出,并放入到另外一个新的集合中(当然,这个集合可以根据需要随意定义),然后和当前的关联对象组成MAP输出;最后在调度中取数据时已经不再需要session,也不出出现failed to lazily initialize a collection of role: B, no session or session was closed的错误 了。我的实现代码如下,仅供备忘:

 

 

 

原创粉丝点击