一个表的JPA复合键和另一个表的主键 - 可能吗?

时间:2015-09-11 14:54:52

标签: java mysql spring hibernate jpa

是否可以在同一域模型(实体类)中同时具有组合键和主键,以便使用组合键连接某些表(查询),并使用主键连接其他表(查询) ?

我正在处理遗留应用程序,而且我对更改底层数据库的访问权限有限。我们的一些查询期望单行结果,但由于我们的数据库设计存在缺陷而导致行数增加。我们可以通过向我们的某个域模型引入复合键来解决此问题,但这样做会影响依赖原始主键的许多(许多)其他组件。

根据我对JPA的理解以及迄今为止我就此事所做的阅读,我不认为这是可能的,但我认为值得一提以便与其他可能遇到过类似问题的人接触

2 个答案:

答案 0 :(得分:0)

该表只有一个primary key,因此您无法选择要使用的primary key。另外,我无法理解为什么你会在数据库原始模型和JPA之间产生差异。实际上,获取单行而不是多行是where子句的任务。

你说在添加复合pk后你的一些查询失败了,那么你可能只是以错误的方式制作了你的复合pk? 无论如何,这是一个很好的示例或实现复合pk,可能会帮助你: Mapping ManyToMany with composite Primary key and Annotation:

答案 1 :(得分:0)

也许你应该对你的问题有不同的看法。

  1. 如果您的查询返回多个不同行,那么您应该能够使用更具体的WHERE子句解决此问题;

    < / LI>
  2. 如果您的查询返回多个相等行,则应在查询中尝试使用DISTINCT子句,例如:

  3. SELECT brISTINCT e FROM br.com.stackoverflow.Entity e