微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java 持久性:合并失败后出现致命错误如何继续合并?

如何解决Java 持久性:合并失败后出现致命错误如何继续合并?

我尝试捕获损坏对象的错误,我无法将其保存到数据库中。目标是跳过错误并继续合并其他对象。

    for (Dossier dossier : dossiers) {
        try {

           dossierNew =  em.merge(dossier);

        } catch (Exception ex) {

            return dossierNew;
            
        }

}

这是我无法避免的预期错误

12:51:37,325 调试 [org.hibernate.engine.jdbc.spi.sqlExceptionHelper] (认任务 4)无法执行语句 [n/a]: com.ibm.db2.jcc.am.sqlIntegrityConstraintViolationException:DB2 sql 错误sqlCODE=-407,sqlSTATE=23502,sqlERRMC=TBSPACEID=7,TABLEID=5, COLNO=18,驱动程序=4.24.92 在 com.ibm.db2.jcc.am.b6.a(b6.java:806) 在 com.ibm.db2.jcc.am.b6.a(b6.java:66) 在 com.ibm.db2.jcc.am.b6.a(b6.java:140) 在 com.ibm.db2.jcc.am.k3.c(k3.java:2817) 在 com.ibm.db2.jcc.am.k3.a(k3.java:2254) 在 com.ibm.db2.jcc.t4.ab.r(ab.java:1631) 在 com.ibm.db2.jcc.t4.ab.l(ab.java:748) 在 com.ibm.db2.jcc.t4.ab.d(ab.java:111) 在 com.ibm.db2.jcc.t4.p.c(p.java:44) 在 com.ibm.db2.jcc.t4.av.j(av.java:162) 在 com.ibm.db2.jcc.am.k3.an(k3.java:2249) 在 com.ibm.db2.jcc.am.k4.a(k4.java:4609) 在 com.ibm.db2.jcc.am.k4.b(k4.java:4154) 在 com.ibm.db2.jcc.am.k4.be(k4.java:821) 在 com.ibm.db2.jcc.am.k4.executeUpdate(k4.java:795) 在 org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:537)

但在那之后,我的 entityManager 不再用于进一步的操作:

12:51:47,917 警告 [org.hibernate.engine.jdbc.spi.sqlExceptionHelper] (认任务 4)sql 错误:0,sqlState:空 12:51:47,917 错误 [org.hibernate.engine.jdbc.spi.sqlExceptionHelper](认 task-4) IJ031070:事务无法继续:STATUS_MARKED_ROLLBACK 12:51:47,920 调试 [org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl] (认任务 4)从启动 JDBC 连接释放 交易后 12:51:47,922 调试 [org.hibernate.engine.jdbc.spi.sqlExceptionHelper](认 task-4) 无法记录警告:java.sql.sqlException:IJ031070:事务 无法继续:STATUS_MARKED_ROLLBACK 在 org.jboss.jca.adapters.jdbc.WrapperDataSource.checkTransactionActive(WrapperDataSource.java:248)

期待建议:-)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。