我最近遇到了一个非常出乎意料的(对我而言)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,这意味着在事务关闭之前我找不到持久化实体。
问题。 是否有任何变通方法可以找到尚未提交但持久化的实体?如果没有,我应该自己做一些缓存吗?