Удаление объекта JPA не удается из-за ограничений внешнего ключа?

Почему следующий запрос завершится ошибкой из-за ограничения внешнего ключа? Для меня нет другого способа удалить связанные данные, о которых я знаю.

Query query=em.createQuery("DELETE FROM Person");
query.executeUpdate();
em.getTransaction().commit();

Я считаю, что оскорбительные отношения, вызывающие проблему, - это

1 ответов


почему следующий запрос завершится ошибкой из-за ограничения внешнего ключа?

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

и хотя спецификация JPA явно пишет, что массовое удаление не каскадируется на связанные объекты:

4.10 массовое обновление и удаление операций

...

операция удаления только распространяться сущности указанного класса и его подклассы. Это не каскад связанная сущность.

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

вероятно, вы столкнулись с одним из ограничений массового удаления Hibernate, см., например:

Я предлагаю поднять вопрос.

обходной путь: используйте собственные запросы для удаления таблицы коллекции, а затем таблицы сущностей.