Hibernate JPA 约束违规且事务已处于活动状态

K.A*_*che 5 java hibernate jpa

我有一个表,其中字段“nom”具有唯一约束,当我测试插入表中已存在的该字段的值时,会抛出org.hibernate.exception.ConstraintViolationException 。然后,经过我的坚持,我得到了一个事务已经处于活动状态的异常。

这是我在 Dao 类中持久化的方法

public void persist(E entity) throws Exception {
EntityTransaction tr=entityManager.getTransaction() ;
tr.begin();
entityManager.persist(entity);
tr.commit();
 }
Run Code Online (Sandbox Code Playgroud)

这是我捕获异常的代码

try {

        rd.persist(r);

    } catch (Exception e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个交易问题?

小智 3

您可以允许框架处理事务,而不是显式打开事务(就像在 spring 中您可以使用@transactional)。但如果没有,代码看起来有一个开始和一个提交(如果成功),请尝试使用 finally 在 persist 方法中添加 tr.rollback() (或者您甚至可以使用 tr 检查事务是否仍然处于活动状态) .isActive() 方法。