0

我最近遇到了 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;
}

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

问题。 是否有任何变通方法可以找到尚未提交但仍然存在的实体?如果没有,我应该自己做某种缓存吗?

4

1 回答 1

2

您可以使用EntityManager.flush() 操作

于 2012-07-04T07:54:11.290 回答