Java: Hibernate - Запрос на удаление из нескольких таблиц - PullRequest
2 голосов
/ 19 августа 2009

У меня есть две таблицы, связанные внешним ключом с отношением один ко многим.

В сущности А у меня есть следующее:

@org.hibernate.annotations.Cascade( {
    org.hibernate.annotations.CascadeType.ALL,
    org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
@OneToMany(mappedBy="monitoredFlight", fetch = FetchType.LAZY)
@OnDelete(action=OnDeleteAction.CASCADE)
private List<bTable> BTable = new ArrayList<BTable>();

Теперь я пытаюсь удалить из таблицы A запросом массового удаления:

Query query = em.createQuery("delete from A where originDateTime<:date");

и я получаю ошибку ограничения внешнего ключа. Я решил сделать удаление с помощью соединения, как в MySQL, поэтому я изменил его на:

Query query = em.createQuery("delete from A join BTable where originDateTime<:date");

и я получил синтаксическую ошибку. Я пробовал несколько комбинаций с или без соединения и ничего не работает; есть идеи?

Я использую mysql для базы данных и java для языка.

Ответы [ 2 ]

2 голосов
/ 20 августа 2009

Вы можете использовать собственный запрос, в MySQL должно работать следующее:

delete a , b from a inner join b on a.id=b.a_id where ...
1 голос
/ 19 августа 2009

Вы можете установить внешний ключ с параметром в каскаде удаления , чтобы при удалении ключа, на который он ссылается, все строки, для которых он является внешним ключом, также удалялись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...