Сохранение Java: фатальная ошибка после сбоя слияния. Как продолжить слияние?

#java #exception #javax.persistence

Вопрос:

Я пытаюсь поймать ошибку поврежденного объекта, которую я не могу сохранить в базе данных. Цель состоит в том, чтобы пропустить ошибку и продолжить объединение других объектов.

     for (Dossier dossier : dossiers) {
        try {

           dossierNew =  em.merge(dossier);

        } catch (Exception ex) {

            return dossierNew;
            
        }
 

}

Это ожидаемая ошибка, которой я не могу избежать:

12:51:37,325 отладки [орг.спящий режим.двигатель.с JDBC.спи.SqlExceptionHelper] (задача по умолчанию 4) не удалось выполнить инструкцию [н/д]: ком.в IBM.в DB2.СТК.ам.SqlIntegrityConstraintViolationException: ошибка СУБД DB2 в SQL: код sqlcode=-407, кодом sqlstate=23502, SQLERRMC=TBSPACEID=7, TABLEID=5, COLNO=18, драйвера=4.24.92 на ком.в IBM.в DB2.СТК.ам.В6.в(В6.в Java:806) на ком.в IBM.в DB2.СТК.ам.В6.в(В6.Ява:66) на ком.в IBM.в DB2.СТК.ам.В6.в(В6.Ява:140) на COM и.в IBM.в DB2.СТК.ам.К3.с(К3.в Java:2817) на ком.в IBM.в DB2.СТК.ам.К3.а(К3.в Java:2254) на ком.в IBM.в DB2.СТК.Т4.АВ.Р(АВ.в Java:1631) в ком.в IBM.в DB2.СТК.Т4.АВ.л(АБ.Ява:748) в ком.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:47,917 ПРЕДУПРЕДИТЬ [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (задача по умолчанию-4) Ошибка SQL: 0, состояние SQL: null 12:51:47,917 ОШИБКА [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (задача по умолчанию-4) IJ031070: Транзакция не может быть выполнена: STATUS_MARKED_ROLLBACK 12:51:47,920 ОТЛАДКА [org.hibernate.resource.jdbc.внутренний.LogicalConnectionManagedImpl] (задача по умолчанию-4) Инициирование освобождения соединения JDBC из afterTransaction 12:51:47 922 ОТЛАДКА [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (задача по умолчанию-4) не удалось зарегистрировать предупреждения: java.sql.Исключение SQLException: IJ031070: Транзакция не может быть продолжена: STATUS_MARKED_ROLLBACK в org.jboss.jca.адаптеры.jdbc.WrapperDataSource.checkTransactionActive(WrapperDataSource.java:248)

С нетерпением ждем предложений 🙂