HQL,收藏品和查询缓存 - LazyInitializationException

时间:2013-09-06 18:32:21

标签: hibernate ehcache

我正在尝试使用已经离开连接提取的查询(在延迟关联上)进行缓存,但是当我在查询上启用缓存时,我得到LazyInitianlizationException

我尝试在Hibernate.initialize()的集合中使用DAO但没有成功。

实体和集合都有缓存注释。

不应该使用二级缓存来加载查询缓存中的集合ID的实体吗?

我不想使用OpenSessionInView过滤器。

编辑:dao方法中的Hibernate.initialize()解决了这个问题。由于某种原因第一次它没有奏效。使用查询或条件时,不会执行加入/获取配置文件。需要手动完成。 (有点令人失望)

2 个答案:

答案 0 :(得分:0)

执行初始化时,您是否还处于事务处理中?

答案 1 :(得分:0)

当我检查Hibernate代码时,看起来Hibernate在使用HQL查询时无法重用缓存(它没有从HQL到其缓存机制的编译器)。

阅读有关LazyIntializationException的互联网,您会发现问题的根源。

但是,坦率地说,我可以建议您使用fjorm。免责声明:我是fjorm的创始人。