我在我的hbm映射文件中将lazy属性设置为“true”。但是我想通过代码动态更改“lazy = false”。我怎么能实现这个目标呢?
答案 0 :(得分:1)
您可以通过HQL使用连接,也可以通过Criteria API使用FetchMode.JOIN
,在这种情况下,您可以一次性获得关联。请注意,如果您使用它,则不会从二级缓存中获取关联的对象。
另一个选项是Hibernate.initialize()
或只是调用object.getAssociation()
。
答案 1 :(得分:0)
看看sessionFactory.getClassMetadata(YourClass.class)
。它有访问每个字段的方法。
然而,更文明的方式是使用HQL或Criteria查询覆盖提取策略。另一种选择是修改元数据(具有lazy="false"
)并重建会话工厂。它看起来并不那么可怕。