0

我使用 EclipseLink JPA 和我的工作。并使用 GenerationType.TABLE。

当我使用持久化创建新对象时,如何检索创建对象的 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。

在flush操作后可以找到生成的id,如下所示:

  1. 打电话student.nameOfTheGetterForID
  2. 通过PersistenceUnitUtil.getIdentifier

    //将结果转换为id的类型
    em.getEntityManagerFactory().getPersistenceUnitUtil().getIdentifier(student);

于 2012-08-29T15:05:45.067 回答