Java 当前没有活动的事务
所以我有这个密码Java 当前没有活动的事务,java,Java,所以我有这个密码 public static void insert(User user) { EntityManager em = DBUtil.getEmFactory().createEntityManager(); EntityTransaction trans = em.getTransaction(); trans.begin(); try { em.persist(user); trans.commit
public static void insert(User user) {
EntityManager em = DBUtil.getEmFactory().createEntityManager();
EntityTransaction trans = em.getTransaction();
trans.begin();
try {
em.persist(user);
trans.commit();
} catch (Exception e) {
System.out.println(e);
trans.rollback();
} finally {
em.close();
}
}
但是当我运行时,我得到了这个错误
在调用
回滚()之前,您需要首先检查事务是否处于活动状态
非托管环境习惯用法是:
EntityManager em = emf.createEntityManager();
EntityTransaction tx = null;
try {
tx = em.getTransaction();
tx.begin();
// do some work
...
tx.commit();
}
catch (RuntimeException e) {
if ( tx != null && tx.isActive() ) tx.rollback();
throw e; // or display error message
}
finally {
em.close();
}
有关更多详细信息,请查看hibernate文档
因此,在您的情况下,代码应该是:
EntityManager em = DBUtil.getEmFactory().createEntityManager();
EntityTransaction trans = null;
try {
trans = em.getTransaction();
trans.begin();
em.persist(user);
trans.commit();
} catch (Exception e) {
System.out.println(e);
if (trans != null && trans.isActive())
trans.rollback();
} finally {
em.close();
}
post error as code(以代码形式发布错误)此处的服务器似乎缺少某些内容,例如,在此之前您应该发送一些内容。见: