使用JPA时如何在没有主键的情况下映射数据库视图

问题描述 投票:9回答:1
  • 我在SQL数据库中有视图,没有明显的主键(复合或其他)
  • 我想通过JPA访问它们

我已经读过,我应该能够像处理表格一样处理JPA中的视图(使用@Table注释等)。但是,如果没有主键,我必须从每个列中有效地创建一个复合键(事实上,这是Hibernate的逆向工程工具默认情况下所做的)。

但是如果我这样做会产生不良副作用。例如。

  • 必须编写所有代码指向主键的属性而不是视图: myViewObject.getPrimaryKey()。的getFirstName()
  • 无法在spring Repository上使用“findBy ...”方法(因为该属性是视图的“标识符”的一部分,而实际上并不是它的一个属性)。

我的问题是:如何在这样的地图中映射视图,因为我可以使用JPA轻松访问其属性?

注意:我很高兴被告知我使用完全错误的方法。这似乎是一个普遍存在的问题,必然会有更好的解决方案。

java spring hibernate jpa sql-view
1个回答
10
投票

您可以向视图的每一行添加一个UUID列,这样就可以了use the UUID column as an @Id

© www.soinside.com 2019 - 2024. All rights reserved.