0

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 は、StudentBean に で注釈が付けられていることを要求@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

}
4

1 に答える 1