我有一个没有主键的数据库 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/