Удаление объекта JPA не удается из-за ограничений внешнего ключа?
Почему следующий запрос завершится ошибкой из-за ограничения внешнего ключа? Для меня нет другого способа удалить связанные данные, о которых я знаю.
Query query=em.createQuery("DELETE FROM Person");
query.executeUpdate();
em.getTransaction().commit();
Я считаю, что оскорбительные отношения, вызывающие проблему, - это
1 ответов
почему следующий запрос завершится ошибкой из-за ограничения внешнего ключа?
похоже, что ваш запрос массового удаления не удаляет записи из таблицы коллекции, следовательно, нарушение ограничений FK.
и хотя спецификация JPA явно пишет, что массовое удаление не каскадируется на связанные объекты:
4.10 массовое обновление и удаление операций
...
операция удаления только распространяться сущности указанного класса и его подклассы. Это не каскад связанная сущность.
Это не совсем ваш случай, и я думаю, что то, что вы хотите сделать, должна быть поддержана.
вероятно, вы столкнулись с одним из ограничений массового удаления Hibernate, см., например:
- HHH-3337-Hibernate игнорирует @JoinTable при создании массового обновления / удаления для самостоятельного соединения сущность
- HHH-1917-Bulk Delete на стороне владельца отношения ManyToMany необходимо удалить соответствующие строки из JoinTable
Я предлагаю поднять вопрос.
обходной путь: используйте собственные запросы для удаления таблицы коллекции, а затем таблицы сущностей.