|
|
|
|
|
|
My model has three entities: - Taxi - - shift : Shift - Driver - - taxi : Taxi - Shift - - shiftsPerDay : int
The following query in JPQL works fine:
{code} SELECT t FROM Taxi t WHERE (SELECT COUNT(d) FROM Driver d where d.taxi = t) < t.shift.shiftsPerDay {code}
however if I try to use the JPA criteria API:
{code} return getEntityManager().createQuery( cq.distinct(true).where( cb.not( cb.greaterThanOrEqualTo( cb.count(driverSubquery.select(drivers).where( cb.equal(drivers.get("taxi"), taxi_))), taxi_.get("shift").get("shiftsPerDay") ) ) ) ).getResultList();
{code}
it results in invalid JPQL:
{code} select distinct generatedAlias0 from taxi_fleet.Taxi as generatedAlias0 where count((select generatedAlias1 from taxi_fleet.Driver as generatedAlias1 where generatedAlias1.taxi=generatedAlias0))<generatedAlias0.shift.shiftsPerDay {code}
whereas this would be correct (note "select(count(...))" instead of "count(select ...)"):
{code} select distinct generatedAlias0 from taxi_fleet.Taxi as generatedAlias0 where (select count(generatedAlias1) from taxi_fleet.Driver as generatedAlias1 where generatedAlias1.taxi=generatedAlias0)<generatedAlias0.shift.shiftsPerDay {code}
|
|
|
|
|
|