JPA找到尚未承诺的实体?

时间:2012-07-04 07:42:05

标签: java jpa transactions

我最近遇到了一个非常出乎意料的(对我而言)JPA的行为(由EclipseLink提供)。

请考虑以下代码:

public int myFunction() {
    entityManager.getTransaction().begin(); // Application-managed EntityManager

    MyEntity entity = new MyEntity();
    entity.setPrimaryKey(1);
    entityManager.persist(entity);

    entity = entityManager.find(MyEntity.class, 1);

    if (entity == null) {
        return 0;
    }

    entityManager.getTransaction().commit();

    return 1;
}

函数WILL返回0,这意味着在事务关闭之前我找不到持久化实体。

问题。 是否有任何变通方法可以找到尚未提交但持久化的实体?如果没有,我应该自己做一些缓存吗?

1 个答案:

答案 0 :(得分:2)