JPA语句“翻译”问题

时间:2019-05-10 14:22:46

标签: jpa eclipselink jpql

我有一个像这样的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 ?

(我只添加了from和where子句以使其更短...)

我看不到JPQL查询出了什么问题。可能是我对“ OR”的使用吗?还是我对条件成员的“大胆”使用?

编辑:实际上,该语句可能是正确的,我读错了。但是我有没有共享用户团队的建议,因此在这种情况下第一个条件始终为假,在我看来,该条件应该为真

谢谢!

0 个答案:

没有答案