0 / 0 / 0
Регистрация: 17.03.2023
Сообщений: 3
|
|
Проверка связи между сущностями17.03.2023, 17:43. Показов 1221. Ответов 5
Всем привет. Я недавно начала изучать БД, вот возник вопрос с отношениями между таблицами.
Есть несколько таблиц, которые связаны между собой отношениями. Когда я начала писать рест-контроллер с методом @DeleteMapping, мне сказали проверить наличие связи между сущностями, в случае наличия-выкинуть исключение, в случае отсутствия - удалить объект. Немного не понимаю, как реализовать проверку. Спасибо за помощь)
0
|
17.03.2023, 17:43 | |
Ответы с готовыми решениями:
5
Связи между сущностями, вывод таблиц, Derby Проверка связи с сокетом Организовать связи между сущностями |
98 / 75 / 25
Регистрация: 17.03.2023
Сообщений: 161
|
|
20.03.2023, 12:55 | |
по идеи и так должно выскочить исключение если связь существует. ДБ система не должна позволить удалить сущность если имеется связь. Однако это зависит ещё от конфигурации ДБ, но она должна соответствовать требованиям. Дайте больше информации, вы чем пользуетесь? хайбернет? спринг? поделитесь кодом вашего контроллера.
0
|
0 / 0 / 0
Регистрация: 17.03.2023
Сообщений: 3
|
||||||
22.03.2023, 12:02 [ТС] | ||||||
Использую Spring. Уточнили задание: написать запрос, который будет смотреть есть ли в базе связь c ProductionStudioMoive.
IOException, спасибо за ответ, выше немного поправила вопрос
0
|
98 / 75 / 25
Регистрация: 17.03.2023
Сообщений: 161
|
||||||
22.03.2023, 13:00 | ||||||
можно конечно если угодно провести проверку, однако довольно странно делать это на уровне контроллера. Если уже то на уровне performanceService в методе deleteById. Как я полагаю performanceService загружает объект по его id и потом уже на полученном объекте запускает метод object.delete(). Можно перед этим проверить если у данного объекта связь с чем то например
вам следует её ловить в контроллере и в случае если она появилась генерировать не HTTP.OK а ошибочный вариант например HTTP.BadRequest (статус 400) Добавлено через 12 минут а ещё лучше написать компонент @EventListener нежели вы пользуетесь спрингом Добавлено через 18 минут ээ сорри не @EventListener а @ExceptionHandler вам сюда компонент аннотированный @ControllerAdvice позволяет ловить и обрабатывать исключения где бы они не возникали. Таким образом вам не понадобится обрабатывать ConstraintViolationException исключения в контроллерах.
1
|
0 / 0 / 0
Регистрация: 17.03.2023
Сообщений: 3
|
||||||
22.03.2023, 13:11 [ТС] | ||||||
IOException, да, глобальный обработчик исключений создан. Но в данной задаче требуют именно такого алгоритма(
__ Добавлено через 3 минуты IOException
IOException, я немного не понимаю, как в вашем примере, мне вытащить объект
0
|
98 / 75 / 25
Регистрация: 17.03.2023
Сообщений: 161
|
||||||
22.03.2023, 14:16 | ||||||
![]() Решение
А!
У вас получается отношение между этими сущностями является однонаправленным. То есть вы можете извлечь 1 объект StudiosPerformance из объекта ProductionStudiosMovie. Однако обратную связь вы не реализовали. То есть не можете извлечь все объекты ProductionStudiosMovie связанные с конкретным объектом StudioPerformance. то есть если вы хотите убрать конкретный объект сущности StudioPerformance и проверить существуют ли объекты сущности ProductionStudiosMovie привязанные к объекту который вы хотите удалить, у вас нет простой возможности их получить. для решение этой проблемы у вас два варианта. 1. либо вы делаете запрос по таблице production_studios_movies с условием WHERE performance_id IS ... если результат не пустой (количество найденных объектов >0) значит такие объекты существуют и вы можете кидать исключение. 2. либо, как я бы посоветовал, дополнительно реализуйте обратную связь, то есть сделайте отношение двунаправленным.
performance.getMovies() таким образом реализовать проверку if (performance.getMovies().size()>0) throw ... здесь подробней
1
|
22.03.2023, 14:16 | |
Помогаю со студенческими работами здесь
6
Тип связи между сущностями Определить ключи и связи между сущностями Настроить связи между сущностями (Symfony2) Работа в ERwin, связи между сущностями Создать правильные связи между сущностями Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
|
Полностью асинхронный счётчик на логике (сумматорах) трёх состояний и асинхронных регистрах трёх состояний. Структура "электронный Buttom Up"
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution
В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
|
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
|
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
|
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
|
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
|
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
|
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
|
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
|
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
|