当前位置: 首页 > 知识库问答 >
问题:

JPA/Hibernate重复记录

邴烨
2023-03-14

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

从父项选择父项加入父项。孩子在哪里。。。

当一位家长有两个孩子时,我会得到重复的记录,当一位家长有一个孩子时,我只会得到一条记录,当没有孩子时,我会得到一条记录(如果没有孩子,我就没有记录)。请注意,SQL数据库中没有重复的父数据库。

实体声明如下:

@Entity(...)
public class Parent {

    @Id
    Long parentId;

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

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

    Long parentId;
}

为了简洁起见,我省略了很多代码,但这应该会让你对我要做的事情有一个清晰的认识。请注意,关系是在父方定义的,因为我需要从查询返回的父方及其子方的列表。

共有1个答案

陆星文
2023-03-14

您可以使用DISTINCT关键字来消除重复项:

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

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

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

SELECT parent FROM Parent parent WHERE parent.children...
 类似资料:
  • 问题内容: 我有一个表,例如,具有ID,State和User_ID的Instrument作为列。 因此,我有这个JPA查询来返回具有匹配的User_ID的所有仪器记录。 它仅返回第一个记录,重复的次数与匹配记录的次数相同。 我在Db中有3条记录,仪器ID为1,2和3 我在hibernate状态下启用了show sql查询,该查询直接在数据库上运行良好,并返回了不同的记录。 hibernate查询:

  • 我有一个表,比如说,仪表,ID、State和User_ID作为列。 所以我有这个JPA查询来返回所有带有匹配User_ID的仪器记录。 它只返回第一条记录,重复次数与有匹配记录的次数一样多。 我有三张Db格式的唱片,仪器编号是1、2和3 我在hibernate上启用了ShowSQL查询,查询直接在数据库上运行良好,并返回不同的记录。 Hibernate查询: 工具实体 不知道我错过了什么。

  • 我得到了错误下的无限递归。 下面是我的代码 另一个班 我无法理解为什么在UI上获取此值时会出现此错误。

  • 问题内容: 我尝试了使用“注释”对Hibernate进行“多对多映射”以及vaannila中给出的示例。 http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many- to-many-using-annotations-1.html 这个东西工作正常。但是,如果我稍后尝试向现有的学生添加另一门课程, 它在表中

  • 我对冬眠很陌生。我正试图用hibernate制作我的第一个应用程序,结果遇到了下一个例外: NoClassDeffounderRror:javax/xml/bind/jaxbexception在org.hibernate.boot.cfgxml.internal.configloader$1。initialize(configloader.java:41)在org.hibernate.boot.c

  • 用户详细信息 有人能看出我做错了什么吗?