我最近遇到了 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,这意味着在事务关闭之前我找不到持久实体。
问题。 是否有任何变通方法可以找到尚未提交但仍然存在的实体?如果没有,我应该自己做某种缓存吗?