是否可以在同一域模型(实体类)中同时具有组合键和主键,以便使用组合键连接某些表(查询),并使用主键连接其他表(查询) ?
我正在处理遗留应用程序,而且我对更改底层数据库的访问权限有限。我们的一些查询期望单行结果,但由于我们的数据库设计存在缺陷而导致行数增加。我们可以通过向我们的某个域模型引入复合键来解决此问题,但这样做会影响依赖原始主键的许多(许多)其他组件。
根据我对JPA的理解以及迄今为止我就此事所做的阅读,我不认为这是可能的,但我认为值得一提以便与其他可能遇到过类似问题的人接触
答案 0 :(得分:0)
该表只有一个primary key
,因此您无法选择要使用的primary key
。另外,我无法理解为什么你会在数据库原始模型和JPA之间产生差异。实际上,获取单行而不是多行是where
子句的任务。
你说在添加复合pk后你的一些查询失败了,那么你可能只是以错误的方式制作了你的复合pk? 无论如何,这是一个很好的示例或实现复合pk,可能会帮助你: Mapping ManyToMany with composite Primary key and Annotation:
答案 1 :(得分:0)
也许你应该对你的问题有不同的看法。
如果您的查询返回多个和不同行,那么您应该能够使用更具体的WHERE子句解决此问题;
< / LI>如果您的查询返回多个和相等行,则应在查询中尝试使用DISTINCT子句,例如:
SELECT brISTINCT e FROM br.com.stackoverflow.Entity e