Spring Data Jpa как удалить сущность без удаления другой связной сущности?

У меня есть сущность Lesson:
@OneToMany(mappedBy="lesson", cascade = {
            CascadeType.ALL
    }, fetch = FetchType.LAZY)
    @Getter @Setter
    private List<Client> clients = new ArrayList<>();


И сущность:
Client:
@ManyToOne
    @JoinColumn(name="lesson_ID")
    @Getter @Setter
    private Lesson lesson;

Если я через репозиторий удаляю Lesson (deleteById), то удаляется и запись связанного клиента, а я хочу, чтобы удалялся только Lesson, а у клиента просто занулялось поле LessonId. Можно ли это сделать стандартными средствами или нужно писать запросы ручками?
  • Вопрос задан
  • 1144 просмотра
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Spring
Java Software Engineer
Добрый день.
Можете попробовать следующее:
CascadeType.MERGE,
CascadeType.PERSIST

orphanRemovel = false;
Если orphanRemoval = true, то если у клиента будет отсутствовать lessonId, то он будет удален, так как является "сиротой". А если наоборот false, то удаляться не будет.
Вот, разница между CascadeType.REMOVE vs orphanRemoval
https://www.baeldung.com/jpa-cascade-remove-vs-orp...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 нояб. 2024, в 18:39
30000 руб./за проект
25 нояб. 2024, в 18:35
30000 руб./за проект
25 нояб. 2024, в 18:33
10000 руб./за проект