【问题标题】:JPQL LEFT JOIN: is the collection member variable condition evaluated against all members?JPQL LEFT JOIN:集合成员变量条件是否针对所有成员进行评估?
【发布时间】:2013-08-21 16:23:42
【问题描述】:

假设我有一个这样的 JPQL 查询:

SELECT p
  FROM Parent p
  LEFT OUTER JOIN p.children child
 WHERE p.children IS EMPTY
    OR child.x = 'y'

我希望 Parent 在以下任何情况下返回实例:

  • Parent 没有孩子
  • Parent 至少有一个孩子的x 等于y

根据 JPA 规范,上面的查询应该做我想要的吗?还是我必须拖出EXISTS-and-subquery-and-IN 机器?

【问题讨论】:

  • 你为什么不添加一些日志并自己找出来?
  • 你好;谢谢你的评论。我对规范定义的行为感兴趣,而不是特定于实现的行为。

标签: jpa jpql


【解决方案1】:

是的,无论 JPA 实现如何,您的查询都会做您想做的事。就我个人而言,我认为没有任何怀疑的余地,尽管我能感觉到你不喜欢什么:桌子children 可能会加入两次。但在我的恕我直言中,JPA 实现应该在需要时进行两个数据库查询,以便返回正确的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    相关资源
    最近更新 更多