也许是一个愚蠢的问题,但是如果EntityManager.merge()抛出异常,是否有必要在catch-block中对事务进行回滚?
或者异常本身是否意味着合并不起作用,以便下次运行commit时抛出异常的先前更改将不适用?
例:
public void setPerson(Person person) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyLib");
EntityManager em = emf.createEntityManager();
try {
if(!em.getTransaction().isActive()){
em.getTransaction().begin();
}
em.merge(person);
em.getTransaction().commit();
emf.getCache().evict(Person.class); // clear Person cache
} catch (Exception ex){
em.getTransaction().rollback(); // Is this necessary?
} finally {
em.close();
}
}
最佳答案
原文链接:https://www.f2er.com/java/438071.html