Boa tarde, estou precisando de ajuda, pois não consigo utilizar a condição IF dentro de uma estrutura JPQL. Isso é possível?
SELECT p
FROM Product p , ProductPrice pp
WHERE p.id=pp.product.id AND
pp.id = (IF ((SELECT COUNT(tpp.id) FROM ProductPrice tpp WHERE tpp.startDate <= :subDateStart AND tpp.endDate >= :subDateEnd AND tpp.product.id = p.id) > 0)
THEN (SELECT tpp.id FROM ProductPrice tpp WHERE tpp.startDate <= :subDateStart2 AND tpp.endDate >= :subDateEnd2 AND tpp.product.id = p.id)
ELSE (SELECT tpp.id FROM ProductPrice tpp WHERE tpp.main= :subMain AND tpp.product.id = p.id))
AND pp.value > :productValuePriceStart GROUP BY p.id
Tentei essa solução porem começo a receber o seguinte erro. Parece que nao existe essa expressao em JPQL
QUERY:
SELECT p FROM Product p , ProductPrice pp WHERE p.id = pp.product.id AND
pp.id = (CASE WHEN ((SELECT COUNT(tpp.id) FROM ProductPrice tpp WHERE tpp.startDate <= :subDateStart AND tpp.endDate >= :subDateEnd AND tpp.product.id = p.id) > 0)
THEN (SELECT tpp.id FROM ProductPrice tpp WHERE tpp.startDate <= :subDateStart2 AND tpp.endDate >= :subDateEnd2 AND tpp.product.id = p.id)
ELSE (SELECT tpp.id FROM ProductPrice tpp WHERE tpp.main= :subMain AND tpp.product.id = p.id) END)
AND pp.value > :productValuePriceStart GROUP BY p.id