java - 没有实体主键的 JPA map View

标签 java jpa primary-key composite-primary-key database-view

我有一个没有主键的数据库 View 。它有一组列,可以唯一标识 View 中的一行,但其中三个列可以为 null。我已经尝试基于这四列创建一个具有复合主键的实体,但是从 View 中检索数据时出现此错误:

The primary key read from the row ... during the execution of the query was detected to be null.  Primary keys must not contain null.

有什么我可以做的,例如,在定义 View 时添加一个自动生成的列?

最佳答案

JPA 规范规定实体类必须有一个唯一的、不可变的 ID

从逻辑上讲,如果没有任何主键,就不能称为实体。您可以做的是创建您的 VIEW 的 POJO 表示,然后执行 SQL Native 查询,然后将结果集映射到您的 POJO。 这是使用 @SqlResultSetMapping/@ConstructorResult 的示例 http://www.thoughts-on-java.org/result-set-mapping-constructor-result-mappings/

关于java - 没有实体主键的 JPA map View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46835336/

相关文章:

sql-server - 主键升序与降序

mysql - 主键列的全局禁用更新

java - 如何将字符串形式的图像(从android捕获并使用arraylist传递)转换为blob并将其保存在mysql数据库中

java - JPA @ManyToOne,附加条件

java - 如何处理带有自定义异常的返回 null

java - JPA CriteriaQuery - 如何使用 IN 比较运算符

jpa - 如何知道 EclipseLink 实体是否已分离?

sql - 从数据库列创建一个唯一的主键(散列)

java - 使用 hibernate.cfg.xml 时更改 hibernate.properties 文件的位置

java - 将路径传递给 exec