-1

获得 DuplicateEntry (org.hibernate.ContraintViolaionException) 后系统崩溃。

错误描述:错误:键 'PRIMARY' 的重复条目 'FELIPE'

我该如何处理这种情况,以便系统可以继续其流程。

我的保存方法:

public void saveDB(Object object)
{
    Session session = HibernateUtil.getSession();
    HibernateUtil.beginTransaction();
    try
    {
        session.save(object);
        HibernateUtil.commit();
    }
    catch(ConstraintViolationException e)
    {
        HibernateUtil.rollback();
    }
    catch (Exception ex) {
        HibernateUtil.rollback();
    }
    finally {
        HibernateUtil.closeSession();
    }
}

实际上,我想知道 MySQL 是否可以在重复输入异常后自行恢复,因为在该异常之后,该表似乎被锁定了。

4

1 回答 1

0

在休眠 cfg 文件 hibernate.connection.isolation 中使用以下属性,值为 2 以避免脏读。

尝试在 session.save(object); 中使用要使用的本地对象;例如,如果我们在保存方法中使用一个对象,该对象要么在类级别声明,要么在循环外部声明,然后将其设为本地。Hibernate 在 jvm 中保留对象引用

于 2013-08-02T09:54:18.707 回答