1

我在实体之间有一对多的关系。执行此 JPQL 查询时:

SELECT parent FROM Parent parent JOIN parent.child child WHERE ...

当父母有 2 个孩子时,我得到重复的记录,当父母有一个孩子时只有一个,没有孩子时没有(没有孩子时没有)。请注意,SQL 数据库中没有 Parent 的重复项。

实体声明如下:

@Entity(...)
public class Parent {

    @Id
    Long parentId;

    @OneToMany(mappedBy = "parentID")
    List<Child> children;
}

@Entity(...)
public class Child {a

    Long parentId;
}

为了简洁起见,我省略了很多代码,但这应该让您对我正在尝试做的事情有一个深刻的了解。请注意,该关系是在父母一方定义的,因为我需要从查询返回的父母名单及其子女。

4

1 回答 1

1

您可以使用以下DISTINCT关键字去除重复项:

SELECT DISTINCT parent FROM Parent parent JOIN parent.child child WHERE ...

编辑:该DISTINCT关键字用于从查询结果中删除重复项,无论这些重复项存在的原因如何。有时原因是重复的数据库条目。但更多情况下,重复是JOIN语句的结果,因此您的用例是完全合法的。

DISTINCT但是,您可以通过使关系双向来避免显式连接和关键字。然后您可以通过导航使用隐式连接:

SELECT parent FROM Parent parent WHERE parent.children...
于 2013-05-02T15:11:04.663 回答