Существует сущность A, связывающая (многозначно) сущность B с обратным (отображаемым) ссылкой от B до A. Также существует ссылка A-C и обратная ссылка C на A. Когда я выдаю entityManager.remove (A), затем flush(), «delete» не gerenated! Но и исключений нет. Это так же, как и remove(). Почему это произойдет? Если перед remove() мы извлекаем A из обратных ссылок B.listOfA и C.listOfA, «delete» генерируется, как ожидалось.Безмолвно игнорируется remove()
Также примечание my another question, где я пришел к выводу, что orphanRemoval не всегда работает должным образом. Теперь я начинаю подозревать, что, возможно, каскадирование сработало хорошо, но после этого фактическое каскадное удаление было «проглочено», как я описал здесь.
Проведение сопоставления объектов вместе с вашей логикой удаления поможет. Вы можете проверить, начинаете ли вы и совершаете транзакцию в менеджере сущностей. –
Удаление сирот должно осуществляться только лицами, находящимися в частной собственности. Если у вашего «сироты» есть другие отношения с ним, эти отношения должны быть отменены - то, что JPA не сделает для вас. Если в любом из этих отношений есть каскадные настройки, они могут вызвать такие проблемы. Удаление объектов, на которые ссылаются другие, без исправления этих ссылок, вызывает всевозможные проблемы при работе с кэшированием JPA. – Chris