【问题标题】:JPA join entity on the same entityJPA 在同一实体上加入实体
【发布时间】:2011-12-12 11:24:25
【问题描述】:

我有一个关于 JPQL 的问题。我需要在同一个实体上加入实体。 Entity.child_id 被映射为 JPA 实体类中的一个集合,即实体有一个集合属性(“children”),它包含每个孩子。 Join 可以很好地处理这个集合(顺便说一下,不知道为什么),例如:

SELECT parent.id, child FROM Entity parent JOIN parent.children child

问题是,有没有办法在没有 JOIN 的情况下编写这个查询,如下所示:

SELECT parent.id, child FROM Entity parent, Entity child WHERE <condition>

我不知道如何构造条件。 “parent.children = child” 不起作用 - 左侧是集合,右侧是单个实体。我猜必须使用“child IN (parent.children)”之类的东西,但我不知道该怎么做。我需要它,因为我无法在更复杂的查询中将一般连接与另一个连接结合起来。 提前致谢!

【问题讨论】:

    标签: join jpql


    【解决方案1】:

    好的,我自己来回答。

    第一种方式:

    SELECT parent.id, child FROM Entity parent, IN(parent.children) child
    

    第二种方式:

    SELECT parent.id, child FROM Entity parent, Entity child WHERE child MEMBER OF parent.children
    

    只有第二个查询非常危险,它会生成非常繁重的带有 IN 的交叉连接 sql 查询。 如果有人有更好的解决方案 - 如果你能分享,我真的很感激,我还没有解决整个任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 2011-09-03
      相关资源
      最近更新 更多