У меня есть оператор JPA, похожий на этот
select p from Proposal p where p.creationTime > :startDate AND p.creationTime < :stopDate AND ((p.owner = :owner) OR (:member MEMBER OF p.sharedWithTeam.members)) ORDER BY p.creationTime DESC
Но он никогда не дает никакого результата.Я использую EclipseLink.
Немного покопавшись в сгенерированном SQL, я обнаружил, что он переводит запрос в нечто, что никогда не может быть правдой!
SELECT XXX FROM userteam_users t3, USERTEAM t2, USERS t1, PROPOSAL t0 WHERE ((((t0.CREATIONTIME > ?) AND (t0.CREATIONTIME < ?)) AND ((t0.OWNER_username = ?) OR (? = t1.username))) AND ((t2.ID = t0.SHAREDWITHTEAM_ID) AND ((t3.teams_ID = t2.ID) AND (t1.username = t3.members_username)))) ORDER BY t0.CREATIONTIME DESC LIMIT ? OFFSET ?
(я включил только изи где пункт, чтобы сделать его короче ...)
Я не вижу, что не так с моим запросом JPQL.Может ли это быть моим использованием «ИЛИ»?или мое "смелое" использование члена условия?
РЕДАКТИРОВАТЬ: на самом деле, утверждение может быть правдой, я неправильно понял.НО у меня есть предложения без НИОКР, поэтому первое условие в этом случае всегда ложно, и оно должно быть верным (на мой взгляд)
Спасибо!