简体   繁体   English

带有OR的JPQL不返回预期结果

[英]JPQL with OR doesn't return expected result

I want to get all clients which have no users at all or a specific user in the list. 我想获取所有根本没有用户或列表中没有特定用户的所有客户端。 But I always get wrong results. 但是我总是得到错误的结果。 If I seperate the one into two queries it works like a charm. 如果我将一个查询分为两个查询,它就像一个符咒。 Only connecting them fails. 仅连接它们失败。

I hope you can help me ;) 我希望你能帮帮我 ;)

Here's my Query: 这是我的查询:

Query q = em.createQuery("SELECT c FROM Clients c WHERE SIZE(c.usersList) = 0 OR ?1 MEMBER OF c.usersList"); q.setParameter(1, user);

Using LEFT JOIN instead of implicit join coming from MEMBER OF helps: 使用LEFT JOIN代替MEMBER OF的隐式联接有帮助:

SELECT c 
FROM Client c LEFT JOIN c.usersList u 
WHERE SIZE(c.usersList) = 0 OR u = ?1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM