Java Hibernate 在失败时不会回滚事务,因为数据库中有重复的键

标签 java hibernate transactions

我正在使用 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/

相关文章:

android - SQLite 事务与 Google IO REST 模式的 ContentProvider?

java - 按计划进行缓存驱逐后,Spring 缓存未被使用

hibernate - MultiTenant Hibernate + Spring boot - 如何防止它在服务器启动期间查找连接

java - 使用主键 : org. 连接表 hibernate.mapping.SimpleValue 无法转换为 org.hibernate.mapping.Component

java - jpa 独立自定义类型映射/javax.persistence.x 替代 org.hibernate.annotations.Type 和 org.hibernate.annotations.TypeDef

c++ - SQLite sqlite3pp C++ api:如何将可以在数据库中找到的所有 sqlite3pp::transactions 加载到某个 vector 或集合中?

java - 为什么我的 View 不是垂直设置的?

java - 在 Objective-c 中使用反射进行映射?

java - Android Nexus 6 模拟器上的 "Unfortunately, Launcher has stopped"

java - Fitnesse:测试未正确进行清理