2012-05-01 93 views
3

我得到一個util.List實例。每個實例都有另一個集合。我想初始化集合的所有實例。這是如何做到的。如何初始化休眠中的集合集合

Hibernate.initialize(parentList); 

但會議結束時。可以檢索parentList的對象的屬性。但是它的集合的實例屬性不能被檢索。我初始化的方式是錯誤的還是有其他問題?或者如何初始化所有實例。

回答

10
Hibernate.initialize(parentList); 

只會初始化列表中的對象而不是列表中的對象。

從文檔:

注意:這只是確保代理對象或集合的intialization; 不能保證INSIDE集合中的元素將被初始化/實現化爲 。

編輯:根據註釋

說,如果我有一個Student實體和每一個學生實體Course實體的名單。那麼學生名單可以初始化這樣的:

for (Student student : studentList) { 
    Hibernate.initialize(student.getCourses()); 
} 
+1

謝謝。那麼有沒有辦法來初始化它們? –

+1

**注意: - **直接代理只能初始化。如果需要代理的代理,則必須像上面提到的那樣再次調用「initialize()」。謝謝 –

+0

你可以檢查嗎? http://stackoverflow.com/questions/40392996/does-hibernate-initialize-requires-a-time-delay我的問題是,如果我添加調試點,並等待幾秒鐘,只有我得到我的列表。否則它不工作 – Ratha

0

乾淨的工作方式,是使用延遲加載,以保持和使用價值對象設計模式將數據從持久化對象轉移到值對象,反之亦然。