Мой запрос выглядит так: «Удалить из организации, где some_key_id =?»(я не удаляю это на основе идентификатора первичного ключа)
Массовое удаление (вы должны упомянуть об этом в своем вопросе) ни к чему не приводит.Цитирование спецификации JPA 1.0:
4.10 Операции массового обновления и удаления
...
Операция удаления применяется только к объектам указанного класса и его подклассам, Это не относится к связанным сущностям .
Это очень раздражающее ограничение, и есть много RFE для улучшения вещей ( HHH-695 , HHH-1917 , HHH-3337 , HHH-5529 и т. Д.).
На данный момент возможные решения включают:
- очистите дочернюю таблицу самостоятельно
- используйте каскадные внешние ключи в схеме.
Теперь странная часть ... Мое понимание @OnDelete(action = OnDeleteAction.CASCADE)
состоит в том, что эта аннотацияпредполагается, что он используется для обеспечения того, чтобы внешний ключ создавался с соответствующим условием ON DELETE CASCADE
(решение № 2).Другими словами, я ожидаю, что все будет работать.
Сгенерировал ли Hibernate таблицу Organization
?Можете ли вы проверить DDL?Вы видите ожидаемое ON DELETE CASCADE
?Если нет, добавьте его.