2017-03-01 59 views
0

我有一個名爲實體與一對多的關係與類型兒童通過此設立的一些兒童的實體:休眠設置抓取動態

@OneToMany(fetch=FetchType.LAZY, mappedBy = "child") private Set<Child> children; 

我把fetch=FetchType.LAZY,因爲我需要它作爲奎克作爲可能只要我不需要知道孩子是什麼。

有時,我需要找到他們,當我尋找一些實體。

在這種情況下,根據這些1234問題的建議,我寫的那種東西:

from Entity as ent left join fetch ent.children where /* some conditions */ 

的一點是,我從另一個類獲得的條件,所以我將不會使用Criteria,除非我找到一種方法來轉換查詢對象的類型

getSession().createQuery("from Entity where /* some conditions */"); 

在條件中。問題是我得到了連接給出的記錄數,所以每個空的一組兒童和每個兒童都有一個記錄。

我需要的僅僅是該實例的子項適當填充集合的實體的實例(或實例列表,根據我在名單上稱爲getResultList()的事實)。

回答

0

其實這是一個特徵:想象一下,如果你沒有它的孩子,你會獲取你的實體,然後再次堅持它,休眠會刪除所有的孩子。因爲它不能確定你做過或沒有「自己」刪除的天氣。

你可能想要嘗試的是獲取一個元組(並且這樣做只選擇你感興趣的表列)而不是整個實體。您只能在活動事務中正確訪問懶惰字段。