Ошибки при очистке в Hibernate, когда у меня есть ошибки в MySQL ⇐ JAVA
-
Гость
Ошибки при очистке в Hibernate, когда у меня есть ошибки в MySQL
Я реализую решение с помощью Grails для пакетной фиксации, но столкнулся с проблемой, когда правила базы данных установлены напрямую. Например, если у меня есть столбец «имя», настроенный как уникальный, и я пытаюсь сохранить уже существующие данные, транзакция не может быть зафиксирована, даже если я обрабатываю ошибки вручную (используя try/catch). Это предотвращает пакетное решение с индивидуальным контролем ошибок.
Я проверил некоторые возможности, используя аннотацию @transaction со свойством noRollbackFor и используя исключения, сообщаемые в консоли. Однако поддерживать другие итерации в рамках одной транзакции было недостаточно. Я также протестировал функцию точек сохранения, сохраняя точку до того, как произошла ошибка, и в случае возникновения ошибки я откатился к «чистой» точке. Тем не менее, «очистить» исключение транзакции было недостаточно.
Ошибка:
org.hibernate.AssertionFailure: нулевой идентификатор в записи com.pacage.Domain (не очищать сеанс после возникновения исключения) Эта ошибка возникает только в конце моего метода, когда транзакция сбрасывается.
Я пытаюсь создать функцию, которая получает несколько элементов и сохраняет их в пакетах транзакций. Однако, если какой-либо из них обнаружит ошибку MySQL, я хотел бы обработать ее индивидуально, а остальные зафиксировать, которые были успешными.
Я реализую решение с помощью Grails для пакетной фиксации, но столкнулся с проблемой, когда правила базы данных установлены напрямую. Например, если у меня есть столбец «имя», настроенный как уникальный, и я пытаюсь сохранить уже существующие данные, транзакция не может быть зафиксирована, даже если я обрабатываю ошибки вручную (используя try/catch). Это предотвращает пакетное решение с индивидуальным контролем ошибок.
Я проверил некоторые возможности, используя аннотацию @transaction со свойством noRollbackFor и используя исключения, сообщаемые в консоли. Однако поддерживать другие итерации в рамках одной транзакции было недостаточно. Я также протестировал функцию точек сохранения, сохраняя точку до того, как произошла ошибка, и в случае возникновения ошибки я откатился к «чистой» точке. Тем не менее, «очистить» исключение транзакции было недостаточно.
Ошибка:
org.hibernate.AssertionFailure: нулевой идентификатор в записи com.pacage.Domain (не очищать сеанс после возникновения исключения) Эта ошибка возникает только в конце моего метода, когда транзакция сбрасывается.
Я пытаюсь создать функцию, которая получает несколько элементов и сохраняет их в пакетах транзакций. Однако, если какой-либо из них обнаружит ошибку MySQL, я хотел бы обработать ее индивидуально, а остальные зафиксировать, которые были успешными.
Мобильная версия