2012-05-25 43 views
5

我有一個親子關係懶惰屬性集false,所以當我得到父類的查詢我也得到他的孩子。在Hibernate中可以延遲加載非惰性關係嗎?

通常最好加載所有父母子女,但在一種情況下我不需要這樣做。

有沒有辦法避免在沒有改變lazy = false關係的情況下獲取父項時獲取子項?

+0

爲什麼不能簡單地改變從這種關係延遲加載配置爲「假」?是否有任何特定的約束或要求讓你猶豫? – kyiu

回答

4

不,這是不可能的。如果你只是有一個情況下的關聯不能被提取,你唯一可以做的事情是使用DTO的,而不是你的實體,並用預測,以僅獲取你想要的東西:

String hql = "select firstName, lastName from User u where ..."; 
List<Object[]> rows = session.createQuery(hql).list(); 
List<UserDTO> users = new ArrayList<UserDTO>(rows.size()); 
for (Object[] row : rows) { 
    users.add(new User((String) row[0], (String) row[1])); 
} 
return users;