Проблема с заявлением JPA "перевод" - PullRequest
1 голос
/ 10 мая 2019

У меня есть оператор 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.Может ли это быть моим использованием «ИЛИ»?или мое "смелое" использование члена условия?

РЕДАКТИРОВАТЬ: на самом деле, утверждение может быть правдой, я неправильно понял.НО у меня есть предложения без НИОКР, поэтому первое условие в этом случае всегда ложно, и оно должно быть верным (на мой взгляд)

Спасибо!

...