Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 1
Регистрация: 26.09.2015
Сообщений: 40

Как правильно отлавливать Constraint ForeignKey в DAO?

03.07.2016, 19:59. Показов 1622. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Введение: как известно, В БД при соответствующие настроенном ForeignKey constraint при попытке удалить запись (если на неё будут ссылаться другие записи) - возникнет ошибка Constraint violation exception.

Задача: показать пользователю ошибку в удобочитаемом виде.

Как у меня сделано сейчас: создал именованный Constraint ForeignKey. И в описании пойманного исключения проверяю строку на вхождение имени этого constraint'а.

Примерно так:
Java
1
2
3
if (ex.getMessage().contains("FK_CONSTRAINT_NAME")) {
    throw new MyException("Нельзя удалить строку, т.к. на неё ссылаются другие записи");
}
Вопрос: какие существуют best practices по обрабатыванию этого кейса.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.07.2016, 19:59
Ответы с готовыми решениями:

Как правильно использовать колонку дискриминатор в DAO
Имеется таблица с персонами. Последняя колонка в таблице это char дискриминатор "person_type". Если в ячейке колонки буква...

Как добавить ключ FOREIGNKEY в таблицу?
Установила денвер-3,на английском.В MySql создала таблицу.Не могу никакими судьбами,туплю,добавить ключ FOREIGKEY.кТО СКАЖЕТ,как его...

Как сделать каскадный вызов элементов ForeignKey в одной view в Django?
Задача: Вывести статью, в которой будет 3 вопроса (из относящейся модели), в каждом вопросе будет по 3 ответа (уже относящиеся к самому...

2
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
04.07.2016, 07:31
Можно что нибудь типа
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try {
 удаляем
} catch (ConstraintViolationException constraintException) {
   String constrainErrorMessage;
   switch (constraintException.getErrorCode()) {
      case MysqlErrorNumbers.ER_ROW_IS_REFERENCED_2:
         constrainErrorMessage = "Нельзя удалить строку, т.к. на неё ссылаются другие записи";
      break;
      case MysqlErrorNumbers.ER_DUP_ENTRY:
         constrainErrorMessage = "Данные не сохранены. Попытка сохранить дубликат";
      break;
      default:
         constrainErrorMessage = "Нарушено ограничение целостности";
      break;
   }
   throw new MyException(constrainErrorMessage);
}
1
1 / 1 / 1
Регистрация: 26.09.2015
Сообщений: 40
05.07.2016, 20:30  [ТС]
Это в Hibernate/JPA так принято отлавливать?
https://docs.jboss.org/hiberna... ption.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2016, 20:30
Помогаю со студенческими работами здесь

Как отлавливать исключения?
Вы пишете код для простой арифметического библиотеки. Вы решили создать метод с именем Devide, который принимает два аргумента (х и у), и...

Как отлавливать exceptions от stl?
Использую вектор, в описнии написано Return value f a reallocation happens, the storage is allocated using the container's...

Как отлавливать p2p трафик
Добрый день! Подскажите, как возможно вычленить p2p трафик? Запретить торренты?

Как отлавливать события wx.CheckListBox
Добрый вечер. self.spis_log = wx.CheckListBox(frame.panel_msg, 318, choices = self.login_uch, size = (430, 140), pos = (5, 55)) ...

Доступ к ForeignKey
Как получить доступ к menu? class Group(models.Model): category = models.ForeignKey(Category) menu =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru