Когда я удаляю запись из таблицы, которая имеет внешние ключи для других, соответствующие записи также не удаляются - PullRequest
0 голосов
/ 12 июня 2019

У меня есть таблица (Entity), из которой я удаляю некоторые записи на основе идентификатора из другого объекта в Java.

Эта таблица имеет внешние ключи для других таблиц, скажем, поля ID1 и ID2. Когда я удаляю с помощью HQL-запроса запись с ID, записи с ID1 и ID2 все еще там. Те объекты, которые имеют ID1 и ID2, объединяются с @ManyToOne (CascadeType.ALL), поэтому я не могу использовать orphanRemoval = true ..

Кто-нибудь знает, что мне делать?

Класс сущности:

@ManyToOne(targetEntity = First.class, cascade = {CascadeType.ALL})
@JoinColumn(name = "ID_LINE_HEADER")
private First lineHeader;

@ManyToOne(targetEntity = Second.class, cascade = {CascadeType.ALL})
@JoinColumn(name = "ID_LINE_CONTENT")
private Second lineContent;

Запрос:

        @Query(value = "" +
        "Delete " +
        "from " +
        "   Entity u " +
        "where " +
        "  u.JobExecutionId = :JobExecution ")

1 Ответ

1 голос
/ 12 июня 2019

Перейдите на другую сторону отношения (в вашем случае First и Second класс), где у вас есть аннотация @OneToMany и установите атрибут orphanRemoval на true.

Так же, как это:

@OneToMany(mappedBy = "lineHeader", orphanRemoval = true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...