JPA でネイティブ クエリとして実装している複雑な SQL クエリがあります。エンティティ マネージャーは、結果セットの各行を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 はありません。実際、後で を呼び出したときに ID を生成したいと考えていますStudentRepostiory.save(student)
。
私はキャッチ22の状況にいます。オブジェクトを生成するには ID が必要ですが、まだ ID がありません。
私は何をすべきか?
- IDをnullにしてみました。すべての結果を null にします。
- IDをゼロにしてみました。すべての結果が同じになります。
- Generation Strategy アノテーションを追加してみました。何もしませんでした。
ご参考までに
学生.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
}