我试图捕捉一个损坏对象的错误,但我无法将其保留到数据库中。目标是跳过错误并继续合并其他对象。
for (Dossier dossier : dossiers) {
try {
dossierNew = em.merge(dossier);
} catch (Exception ex) {
return dossierNew;
}
}
这是我无法避免的预期错误:
12:51:37325调试[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,driver=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(第。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:47917警告[org.hibernate.engine.jdbc.spi.sqlexceptionhelper](默认任务-4)sql错误:0,sqlstate:null 12:51:47917错误[org.hibernate.engine.jdbc.spi.sqlexceptionhelper](默认任务-4)ij031070:事务无法继续:状态\u标记为\u回滚12:51:47,920调试[org.hibernate.resource.jdbc.internal.logicalconnectionmanagedimpl](默认任务-4)从aftertransaction 12:51:47启动jdbc连接释放,922 debug[org.hibernate.engine.jdbc.spi.sqlexceptionhelper](默认任务-4)无法记录警告:java.sql.sqlexception:ij031070:事务无法继续:在org.jboss.jca.adapters.jdbc.wrapperdatasource.checktransactionactive(wrapperdatasource)处状态\u标记为\u回滚。java:248)
期待建议:-)
暂无答案!
目前还没有任何答案,快来回答吧!