0

私はEclipseLink JPAを仕事に使用しています。GenerationType.TABLE を使用します。

persist を使用して新しいオブジェクトを作成する場合、作成されたオブジェクトの id フィールドを取得するにはどうすればよいですか。

例:

em.getTransaction().begin();

Student student = new Student();

student.setName("Joe");

em.persist(student);
em.flush();
em.getTransaction().commit();

Query query = em.createQuery("SELECT e FROM Student e");
List<Student> list = (List<Student>) query.getResultList();
System.out.println(list);

em.close();
emf.close();

だから私はすべての学生を見ますが、競争がある環境で私が作成した学生がどれであるかをどのように知ることができますか.

前もって感謝します

4

1 に答える 1

0

質問は生成された id に関するものだと思います。それ以外の場合は、もちろん既に id を手にしています。

生成された ID は、次のフラッシュ操作の後に見つけることができます。

  1. 呼び出しstudent.nameOfTheGetterForID
  2. PersistenceUnitUtil.getIdentifier経由:

    // 結果を id の型にキャスト
    em.getEntityManagerFactory().getPersistenceUnitUtil().getIdentifier(student);

于 2012-08-29T15:05:45.067 に答える