我的hibernate对象A将对象B,C和D作为属性:
A.getB().getName();
A.getC().getTitle();
现在,我想加载A及其所有属性而不会得到LazyInitializationException。 所以,我需要完全加载A的对象图。
有没有在hibernate中检索对象图形的通用方法?
答案 0 :(得分:3)
模式Open Session in View有助于避免LazyInitializationException。同样在Seam中,它由using extended PersistentManager and conversation scope
完成Antother解决方案非常渴望像this example或KLE一样回答。
答案 1 :(得分:3)
您可以在.hbm.xml映射文件中使用属性“lazy =”false“'指定它,或者您可以使用createAlias或createCriteria方法在criteria对象中指定它。
也可以将fetchMode设置为特定关联的条件
答案 2 :(得分:2)
有时候你想要加载完整的对象图,有些时候你想要更少的数据(并且不想支付与加载所有这些相关的性能损失)。因此,假设您的需求各不相同。
一般来说,Hibernate延迟加载,但您可以使用以下几种方法之一加载其他数据(有关详细信息,请参阅Hibernate文档):
懒惰的样本:
A a = ...; // load A
String name = a.getB().getName(); // triggers an implicit query to load B
HQL示例:
select a
from A a
left join a.b b
left join a.c c
where a.id = :id