Witam
Używam JPA + Hibernate z REST service na libach jersey.
Chciałbym wyłączyć i ile to możliwe featching LAZY I EAGER.
Dlczego ?
Dlatego ,że jak powiedzmy mam relacje typu parent-childer (czyile one-to-many) to chciałbym dane pobierać na dwa przypadki:
- Chcę pobrać wszystkie parenty ale bez kolekcji childer
- Chcę pobrać wszystkie parenty wraz z kolekcjią childer
Webserice produkuje xml.
Pierwszy przypadek mogę rozwiązać za pomocą adnotacji @XmlTransient i jest ok,
ale wtedy drugi przypadek nie zadziała bo webservice nie zwróci mi chieldrenów.
Jak dam LAZY w @OneToMany to przy zwracaniu rekordów przez webservice bez @XmlTransient on wywoła getChildrens i wtedy wywoła się zapytanie
,którego nie chce dla 1 przypadku.
Najlepiej było by sparametryzować adnotacje @XmlTransient ,ale nie ma takiej opcji ("albo wóż albo przewóż").
Albo wyłączyć LAZY I EAGER (o ile się da) i pobiereać zawsze to czego się potrzebuje za pomocą criteriaapi czy fetchjoin.
I właśnie wyłączenie LAZY I EAGER byłoby to co by mnie zadowoliło ,ale jak to zrobić, albo jak sparametryzować @XmlTransient