2012-05-25 11 views
5

Mam relacji rodzic-dziecko z leniwy zestaw atrybutów false, więc po otrzymaniu klasy nadrzędnej z kwerendy również uzyskać jego dzieci.Czy jest możliwe leniwe ładowanie dla niezbyt leniwego związku w Hibernacja?

Zwykle lepiej jest załadować wszystko, rodzice-dzieci, ale w jednym przypadku nie muszę tego robić.

Czy istnieje sposób na uniknięcie pobierania dzieci, gdy otrzymam rodzica bez zmiany leniwego związku = fałszywego?

+0

Dlaczego nie po prostu zmienić leniwy ładowanie konfiguracji z tej relacji na "fałsz"? Czy istnieją jakieś szczególne ograniczenia lub wymagania, które sprawiają, że się wahasz? – kyiu

Odpowiedz

4

Nie, to niemożliwe. Jedyną rzeczą, jaką możesz zrobić, jeśli tylko jeden przypadek, w którym stowarzyszenie nie musi być pobierana jest użycie Dto zamiast swojego podmiotu i wykorzystują projekcje tylko odzyskać to, co chcesz:

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; 
Powiązane problemy