Защитите одну сущность от каскадного удаления с помощью Spring Boot и Hibernate - PullRequest
1 голос
/ 07 мая 2019

У меня есть проект, над которым я работаю, в котором у меня есть группа, и у этой группы есть изображение группы (id и url).Когда я удаляю конкретную группу, я хочу, чтобы она также удаляла свой объект изображения из базы данных MySql.

Но первый объект изображения группы в базе данных - это URL-адрес общего значка, который я поместил.там с идентификатором один.

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

Это создает проблему, когда группа, использующая универсальный значок, удаляется, поскольку тогда для group_image_id устанавливается значение NULL, что приводит к возникновению NPE.

Мой вопрос заключается в том, существует ли способ защитыодин объект группового изображения из эффектов каскадного удаления?

1 Ответ

0 голосов
/ 07 мая 2019

Я никогда не пробовал этого, но один из вариантов для изучения - это настройка оператора delete, который используется для типа сущности, который вы хотите предотвратить, когда id = 1. Вы можете сделать это с помощью аннотации @SQLDelete и включить в выражение where «и id <> 1» или что-то подобное.

Поведение по умолчанию (без указания @SQLDelete) заключается в удалении по идентификатору.

Я предлагаю попробовать что-то вроде:

@Table(name="mytable")
@SQLDelete("delete from mytable where id=? and id<>1")
public class MyEntity {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...