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

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:

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ć?

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;

2

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

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:

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;

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