[JPA] Lazy, a i tak mi dociąga dane

0

Witam,

nie do końca rozumiem..

mam encję z

@NamedQuery(name="nowa", query="from User u" )
@Basic(fetch=FetchType.LAZY)
private Nowa nowa;

i tym named query wyciagam sobie dane. W obiekcie User tak czy siak nie mam nulla w obiekcie 'nowa'. Czy to jest ok? Wydawało mi się, że przy typie Lazy trzeba dociągac w stylu

from User u left join u.nowa

To relacja jednokierunkowa.

0

To ze nie masz nulla nie znaczy ze masz tam dane

0

Raz, ze przedmowca ma racje; dwa, ze nie napisales jakiego prowidera uzywasz, sa rozne zachowania. Przeczytaj specyfikacje i dowiesz sie ze dla @basic jak i dla @XXXToOne lazy jest opcjonalne. Np ElclipseLink 2.x domyslnie ignoruje lazy w takich przypadkach w Javie SE, chyba ze wlaczysz weaving czyli manipulacje bytecodu w locie lub uzyjesz specjalnego narzedzia zeby zrobic to raz statycznie. Hibernate swojego czasu mial podobne wymagania, ale to bylo dawno i nie wiem czy cos sie nie zmienilo, dawno nie uzywalem bo stracilem cierpliwosc.

0

Można to zrobić:
http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#performance-fetching-lazyproperties

Nie lepiej zrobić jednak relację @OneToOne typu lazy?

0

@Krzysiek: XXXToOne maja lazy rowniez opcjonalnie, zobacz co napisalem wczesniej.

0

A czy ja napisałem, że się z Tobą nie zgadzam?

Moja wypowiedź była tylko uzupełnieniem, a ostatnie zdanie sugestią, aby zamiast @basic zastosować @OneToOne.
Można też według upodobań zastosować @Embedded.

1 użytkowników online, w tym zalogowanych: 0, gości: 1