Sziasztok!
adott ez a lekérdezés:
final List list =
new JPAQuery(entityManager).from(qdevice).leftJoin(qdevice.parentDevice)
.list(Projections.bean(Device.class, qdevice.id,qdevice.parentDevice));
(a parentDevice Device típusú)
Az a probléma, hogy a lekérdezés csak azokat a Device-okat adja vissza, ahol a parentDevice nem null. Ez miért van így? Hogyan kaphatnám vissza a null parentDevice értékű Device-okat? Ha kiveszem a Projections.bean-ből a qdevice.parentDevice bean-t, akkor jó.
QueryDsl verziója: 3.2.0
- 3016 megtekintés
Hozzászólások
Mivel a projekcióban kijelölted a parentDevice-t és left join-al csatoltad rá, ezért gondolom a QueryDsl nem left outer join
-t fog használni, hanem sima left join
-t, emiatt bebukod a nullokat.
Számomra ez az egész query nagyon furcsa. Miért kell device ID -> parent device objektum map neked? Furcsa, hogy a device-ra nincs szükség, csak az ID-je kell, míg a parent-je meg teljesen kell...
Miért nem olyan query-t csinálsz, amiben a device-okat select-álod, és megkéred a query engine-t, hogy inicializálja a parent device relációt join-al? Nem értek a QueryDsl-hez, de JPA-val (illetve Hibernate-el) ezt simán meg lehet tenni, gondolom ezzel is.
- A hozzászóláshoz be kell jelentkezni