JPQL - zwrócenie nulla przy braku asocjacji i LEFT JOIN

JPQL - zwrócenie nulla przy braku asocjacji i LEFT JOIN
OR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Cześć
Potrzebuje zrobić zapytanie, które zwróci mi pola z obiektu ObjectPlus, a także jeżeli jest asocjacja to z obiektu FilePlus, który jest danego typu.
Jak robię takie zapytanko:

Kopiuj
Select op.id as id, op.name as name, fp as fileplus from ObjectPlus op LEFT JOIN FilePlus fp on op.id = fp.object where fp.type in (3,5,6) or fp is null;

To jest super, ponieważ jak nie ma asocjacji lub też FilePlus nie jest danego typu to zwraca fileplus jako null. Niestety obiekt FilePlus ma również inne asocjacje i przy pobieraniu dużej ilości elementów to trwa bardzo długo.
Próbuje wyciągnąć poszczególne dane z FilePlus, lecz tu pojawia się duży problem - nie są zwracane obiekty typu ObjectPlus, gdzie nie ma asocjacji lub gdzie typ jest inny niż w zapytaniu.
Możecie podpowiedzieć co z tym fantem można zrobić?

Kopiuj
Select op.id as id, op.name as name, fp.name as filename, fp.type as type from ObjectPlus op LEFT JOIN FilePlus fp on op.id = fp.object where fp.type in (3,5,6) or fp is null;

Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1910
2

Tak, napisać natywne query, dzięki czemu ominiesz gimnastykę JPQL-ową. ORM jest kiepskim rozwiązaniem Twojego problemu.

OR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Przy okazji o dziwo znalazłem sposób na poradzenie sobie z moim problemem w JPQL - otóż przy łączeniu należy podać warunek, aby FilePlus nie był nullem.
W zapytaniu:

Kopiuj
Select op.id as id, op.name as name, fp.name as filename, fp.type as type from ObjectPlus op LEFT JOIN FilePlus fp on op.id = fp.object and fp is not null where fp.type in (3,5,6) or fp is null;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.