JPA在同一实体上加入实体

时间:2011-10-21 10:13:19

标签: join jpql

我对JPQL有疑问。我需要在同一个实体上加入实体。 Entity.child_id被映射为JPA实体类中的集合,即实体具有保存每个子节点的集合属性(“children”)。加入适用于此集合(顺便说一下,不知道为什么),例如:

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”不起作用 - 左侧是集合,右侧是单个实体。我想,必须使用像“孩子IN(parent.children)”之类的东西,但我不知道该怎么做。我需要它,因为我无法在更复杂的查询中将常规连接与其他连接组合在一起。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

好的,我会自己回答。

第一种方式:

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查询。 如果有人有更好的解决方案 - 如果你分享我真的很赞成,我还没有解决整个任务。