Tworzony jest taki SQL:
SELECT t1.IDORDER,
t1.DATE,
t1.INFOSTATUS,
t1.ORDERTYPE,
t1.RECEIPTDATE,
t1.REQUESTEDMASS,
t1.RETURNINGMASS,
t1.RETURNINGMASSEL,
t1.STATE,
t1.STATEPNMBEFORE,
t1.STATEQUANTITYBEFORE,
t1.USERGOAL,
t1.WAREHOUSEPNMBEFORE,
t1.WAREHOUSEQUANTITYBEFORE,
t1.WASTEPNMBEFORE,
t1.WASTEQUANTITYBEFORE,
t1.ordering,
t1.part,
t1.sampleorder
FROM Part t0,
Sample t2,
Orderr t1
WHERE (((t0.partOwner = ?)
OR (t2.depositOwner = ?))
AND ((t0.IDPART = t1.part)
AND (t2.IDSAMPLE = t1.sampleorder)))
Zmieniłem nawet zapytanie, by nie porównywać obiektu tylko id:
SELECT o FROM Order o WHERE o.part.partOwner.idUser = :user OR o.sampleorder.depositOwner.idUser = :user
Wytwarzany SQL to:
SELECT t1.IDORDER,
t1.DATE,
t1.INFOSTATUS,
t1.ORDERTYPE,
t1.RECEIPTDATE,
t1.REQUESTEDMASS,
t1.RETURNINGMASS,
t1.RETURNINGMASSEL,
t1.STATE,
t1.STATEPNMBEFORE,
t1.STATEQUANTITYBEFORE,
t1.USERGOAL,
t1.WAREHOUSEPNMBEFORE,
t1.WAREHOUSEQUANTITYBEFORE,
t1.WASTEPNMBEFORE,
t1.WASTEQUANTITYBEFORE,
t1.ordering,
t1.part,
t1.sampleorder
FROM Part t0,
Sample t2,
Orderr t1
WHERE (((t0.partOwner = ?)
OR (t2.depositOwner = ?))
AND ((t0.IDPART = t1.part)
AND (t2.IDSAMPLE = t1.sampleorder)))
o.part i o.sampleorder jest nullable jeśli to ma znaczenie.
Jak zapisać JPQLa by uzyskać efekt którego szukam?