Istnieje klasa Offer
że ma opcjonalnego relacji do klasy Article
. Aby niektóre oferty artykułów posiadały wartość null
.Hibernate/JPA: Jak zmusić niejawna dołącza do korzystania LEFT sprzężenia zewnętrzne
Jeśli użyję następującego oświadczenia, wszystko działa poprawnie. Mam wszystkie oferty, nawet te, które nie mają żadnego artykułu.
SELECT o FROM Offer o
LEFT OUTER JOIN o.article a
LEFT OUTER JOIN o.vendor v
WHERE v.number = '0212' OR a.nummer = '123456'
jeśli zmienić oświadczenie:
SELECT o FROM Offer o
LEFT OUTER JOIN o.article a
LEFT OUTER JOIN o.vendor v
WHERE v.number = '0212' OR o.article.nummer = '123456'
dostałem tylko te oferty o artykuły różne od NULL
. Dzieje się tak, ponieważ notacja dla niejawnych połączeń (o.article.nummer
) wymusza wewnętrzne sprzężenie.
Czy istnieje możliwość narzucenia lewych złączeń zewnętrznych na niejawne łączenia (adnotacja sterowana lub coś innego)? Jeśli jest szansa, że przydałby się krótki formularz tak:
SELECT o FROM Offer o
WHERE v.number = '0212' OR o.article.nummer = '123456'
dla mnie to nie rozwiązało problemu! –
Nie wiem, jak to rozwiązać problem.AFAIK Fetchmode określa tylko, jak pobrać dane, aby zainicjować obiekt w pamięci, a nie jak robić sprzężenia w zapytaniu. –