我正在尝试使用已经离开连接提取的查询(在延迟关联上)进行缓存,但是当我在查询上启用缓存时,我得到LazyInitianlizationException
。
我尝试在Hibernate.initialize()
的集合中使用DAO
但没有成功。
实体和集合都有缓存注释。
不应该使用二级缓存来加载查询缓存中的集合ID的实体吗?
我不想使用OpenSessionInView
过滤器。
编辑:dao方法中的Hibernate.initialize()解决了这个问题。由于某种原因第一次它没有奏效。使用查询或条件时,不会执行加入/获取配置文件。需要手动完成。 (有点令人失望)
答案 0 :(得分:0)
执行初始化时,您是否还处于事务处理中?
答案 1 :(得分:0)
当我检查Hibernate代码时,看起来Hibernate在使用HQL查询时无法重用缓存(它没有从HQL到其缓存机制的编译器)。
阅读有关LazyIntializationException
的互联网,您会发现问题的根源。
但是,坦率地说,我可以建议您使用fjorm。免责声明:我是fjorm的创始人。