0

我决定在我最近开始的项目中使用 JPA 2.1 的实体图功能,但我遇到了一个问题。

当您在 ManyToOne 关系上扩展图表时效果很好,但对于 OneToMany,结果会重复,因为我的提供程序(Hibernate)使用左外连接。

我看到了一些解决方案,他们提出了 Distinct 关键字来解决这个问题,但我认为这是一个棘手的解决方案,即使我们如何获得下一级实体 Distinct。

我的意思是,如果我有 3 个实体 A、B 和 C,我将在 A 而不是 B 上使用 Distinct,其中 B 与 C 具有 OneToMany 关系,那么我们会在 A 中获得 B 的重复记录,依此类推

4

1 回答 1

1

我想到了

当我们将 Distinct 添加到查询中时,生成为 SQL 的内容对数据库提供的结果没有任何影响,因为据我所知, Distinct 关键字作用于它前面的所有列。那么 Distinct 或没有从数据库提供的结果(在这种情况下)将是相同的。

但是Distinct 对 JPA 或其提供者说要在结果集合中获取最左边的表记录 distinct。这就是导致我们得到我们所期望的结果的一点。

如果我误解了,请纠正我

于 2016-12-08T11:13:49.450 回答