将没有主键的SQL视图映射到JPA实体

时间:2013-11-25 20:16:40

标签: java sql hibernate jpa foreign-keys

在我的Java App中,我希望使用JPA获取存储在Oracle数据库中的信息。 在我的数据库中,我有一个View,其中包含一些我从其他表中获得的列。我想映射那个视图。但是,我的视图没有主键,因此我无法创建JPA实体。我想过使用2列作为外键

实施该方法的最佳方法是什么?我已经看到了很多不同的方法,我无法确定哪种方法最适合这种情况。

2 个答案:

答案 0 :(得分:6)

解决此问题的一种方法是使用复合主键,只需将@Id注释添加到相应的字段即可。

答案 1 :(得分:3)

没有最佳方法。由于这是一个视图,因此您永远不会在其中插入任何数据,这意味着您只需在任何现有字段上定义主键即可。您也可以尝试使用insertable=false, updatable=false标记该字段。

<强>更新

您对数据有了更好的了解,但在视图中一般您不能保证所有记录都是唯一的,这就是为什么一般避免直接使用实体的原因从视角来看。我建议使用Wrapper类,比如:

SELECT new com.domain.MyWrapper(field1, field2, field3, field4,...) FROM ViewEntity