Как мы можем решить исключение DataIntegrityViolationException в Spring Hibernate? - PullRequest
5 голосов
/ 10 декабря 2010

Я использую Spring Hibernate с HibernateSupportDao, когда я пытаюсь отправить несколько строк данных для хранения в моей БД, он поднимает DataIntegrityViolationException в определенной строке.Тот же сценарий работал в остаются в задаче на том же столе.Я не вижу проблемы, даже когда я использую тот же код для текущей задачи.Почему был брошен DataIntegrityViolationException и как я могу это исправить?

Ответы [ 5 ]

7 голосов
/ 10 декабря 2010

Непосредственно из API :

Исключение выдается, когда попытка вставить или обновить данные приводит к нарушению ограничения целостности.Обратите внимание, что это не чисто реляционная концепция;уникальные первичные ключи требуются большинством типов баз данных.

В основном это означает, что hibernate пытался что-то сделать, но база данных вызвала исключение.Наиболее распространенным случаем может быть то, что вы удаляете родителя, но не удаляете дочерний элемент с внешним ключом для этого родителя.

Каковы ваши переходные параметры персистентности (т.е. каскад)?

3 голосов
/ 13 августа 2012

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

1 голос
/ 08 августа 2013

DataIntegrityViolationException также может нарушать уникальное ограничение для базы данных (то есть альтернативный ключ). Проверьте, не содержат ли вставленные вами строки данных повторяющиеся данные, которые нарушают такое уникальное ограничение.

0 голосов
/ 24 февраля 2017

Я обрабатываю исключение DataIntegrityViolationException в ExceptionInfoHandler, нахожу случаи возникновения ограничений БД в сообщении первопричины и преобразую его в сообщение i18n через карту.Смотрите код здесь: https://stackoverflow.com/a/42422568/548473

0 голосов
/ 20 сентября 2016

если вы импортируете базу данных откуда-то, то вам также нужно взять папку data сервера и изменить эту папку data на папку данных вашего сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...