【问题标题】:JPA Returning Same Data for 2 different rows in DatabaseJPA为数据库中的2个不同行返回相同的数据
【发布时间】:2015-10-11 03:38:48
【问题描述】:

有两个实体:Employee.javaCompany.java,具有双向@ManyToOne关系;员工与公司有@ManyToOne 关系,公司与员工有@OnetoMany 关系。

当我触发一个命名查询时。 Select c from Company c where c.Id='100'; 为员工返回 2 条记录,但两行具有相同的数据,就像我在数据库中检查一样,我可以看到连接两个表的列有两个不同的员工行。

谁能指出我应该思考并尝试解决的方向?

【问题讨论】:

  • 您能否将这两行原样发布在您的数据库中,以确定返回的是哪一行(两次)?
  • 您正在查询公司,但返回了两名员工?我认为您必须重写您的问题并显示一些代码...

标签: java entity-framework hibernate jpa


【解决方案1】:

根据您在返回相同结果集的数据库查询上方的写作的理解。为了解决这类问题,我们使用候选键。在您的程序中,如果您在 company 表中再添加一列 count,那么我们可以同时使用 employee_id 和 count 作为候选键。请更新您的代码,以便我可以根据您的需要对其进行修改。

或者,您可以在公司表中添加自动增量 ID,然后它也可以工作

【讨论】:

  • 实体关系是双向的,客户 Vehicle ..Vehicle 表的主键为 CustomerId,这是 Customer..那些车辆的主键具有与 customerId 相同的主键..当我使用 JPQL 查询获取该客户时:.如果有两辆车与该客户“BMW”和“AUDI”相关联...我得到“BMW”两次因为主键两辆车都是一样的......这里有同样的问题(不详细的解决方案):stackoverflow.com/questions/5352357/…...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
相关资源
最近更新 更多