我正在使用 hiberante 事务,在事务中我对 db 有 persist() , 我想避免事务在由于重复行持续存在而失败时回滚。 这是我的代码:
db.getTransaction().begin;
for (Item item : itemList) {
try{
//If duplicate key - don't fail the transaction
db.persist(item);
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
db.commit();
这可能吗? 有什么想法吗?
最佳答案
由于多种原因,这有点冒险,但您始终可以单独捕获 ConstraintViolationException(这是重复键异常)并采取相应措施。
关于Java Hibernate 在失败时不会回滚事务,因为数据库中有重复的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36281610/