我有一个报告,其中有一个部分,每个部分都有孩子。
他们都被设置为延迟加载。
我可以知道如何初始化那些部分的孩子吗?
我知道如何初始化部分
使用
.setFetchMode("section", FetchModel.JOIN)
但是那个部分的孩子呢?
注意:我确实知道如何使用Hibernate.Initialization()但是DetachedCriteria可以执行吗?
答案 0 :(得分:0)
在hibernate中,当你尝试使用那些集合时,比如parent.getChildren(),hibernate session会在那时加载子实体。所以叫懒惰。 你不必初始化任何集合,直到你的用例特别需要它。
答案 1 :(得分:0)
您需要在同一事务中调用此方法。
Hibernate.initialize(parent.getChildren());
public static void initialize(Object proxy)抛出HibernateException
强制初始化代理或持久集合。
注意:这只能确保代理对象或集合的初始化;不能保证集合中的元素将被初始化/具体化。
参数:
proxy - a persistable object, proxy, persistent collection or null
抛出:
HibernateException - if we can't initialize the proxy at this time, eg. the Session was closed