2013-08-21 53 views
1

我有一個報告,有一個部分,每個部分都有孩子。DetachedCriteria:初始化孩子的子女

它們都設置爲延遲加載。

我可以知道如何初始化這些部分的孩子嗎?

我知道如何使用

.setFetchMode("section", FetchModel.JOIN) 

但對段的孩子什麼初始化部分

注:我知道如何使用Hibernate.Initialization(),但DetachedCriteria可以執行它嗎?

回答

0

在hibernate中,當你嘗試使用這些集合,比如parent.getChildren(),hibernate會在那個時候加載子實體。所以名字懶惰。 您不必先初始化任何集合,直到您的用例特別要求爲止。

0

您需要在同一事務中調用此方法。

 Hibernate.initialize(parent.getChildren()); 

公共靜態無效初始化(對象代理)拋出一個代理或者持久集合的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