我有一个复杂的 SQL 查询,我在 JPA 中将其作为本机查询来实现。实体管理器会自动将我的结果集的每一行转换为一个Person
对象,从而导致List<Person>
String sql = "select name, address, date_of_birth from ...";
Query q = entityManager.createNativeQuery(sql, Student.class);
List<Student> results = q.getResultList();
return results;
entityManager 要求Student
bean 使用 注释@Entity
,这需要@Id
. API 还要求所有字段都匹配。不幸的是,我的 select 子句来自各种来源,因此实际上并没有 ID。事实上,我想稍后在我调用StudentRepostiory.save(student)
.
我处于第 22 条捕获状态。我需要一个 id 来生成对象,但我还没有 id。
我应该怎么办?
- 我试过让 ID 为空。它使所有结果为空。
- 我已经尝试将 ID 设为零。它使所有结果都相同。
- 我尝试添加生成策略注释。什么都没做。
供你参考
学生.java
@Entity // This forces me to have an Id.
class Student {
@Id Long id // I'm forced to include this, but my query doesn't have one
String name;
String dateOfBirth;
String address;
// Getters and Setters
}