Как сказал
Когда я пытаюсь удалить объект UserProfile, соответствующий объект User по-прежнему остается
Может быть, когда вы пытаетесь удалить UserProfile, вы получаете нарушение ограничения целостности из базы данных - используете ли вы MyISAM в MySQL?
Но так как ты ничего не говорит об этом. Возможно, ваша сущность UserProfile не имеет ссылки на сущность User.
Как сказано в спецификации JPA
операция удаления каскадно относится к объектам, на которые ссылается X , если отношение X к этим другим объектам аннотируется значением элемента аннотации cascade = REMOVE или cascade = ALL
Что-то вроде
UserProfile up = entityManager.find(UserProfile.class, id);
entityManager.close();
// Notice User is null outside a persistence context
// So user will be not removed from the database because UserProfile does not have a reference to it
up.setUser(null);
entityManager.getTransaction().begin();
entityManager.remove(up);
entityManager.getTransaction().commit();
или у вас есть что-то вроде
entityManager.getTransaction().begin();
UserProfile up = entityManager.find(UserProfile.class, id);
// throws UPDATE USER_PROFILE SET USER_ID = NULL
up.setUser(null);
// up.getUser() is null
// So user is not removed
entityManager.remove(up);
entityManager.getTransaction().commit();
В ответ на комментарий ChhsPly:
В Java Persistence с книгой Hibernate вы видите следующее
Атрибут каскада является направленным: Он применяется только к одному концу ассоциации .
Я думаю, что было бы лучше, как
Применяется только к одному концу ассоциации за операцию
Таким образом, вы можете поместить каскадный атрибут в обе стороны одновременно, даже в двунаправленных отношениях. Так что ChssPly прав.
Атрибут mappdeBy устанавливает двунаправленное отношение . Атрибут mappedBy обозначил объект Address как обратную сторону отношения. Это означает, что сущность «Клиент» является владельцем отношений.
ChssPly прав, когда говорит, что mappedBy не имеет ничего общего с каскадом