부모 개체에서 CascadeType.ALL을 가진 자식 목록까지 매우 단순한 단방향 @OneToMany가 있습니다. 자녀를 올바르게 제거하고 삭제하는 방법은 무엇입니까?최대 절전 모드 @OneToMany에서 하위 항목을 올바르게 삭제하는 방법은 무엇입니까?
List에서 remove (하위)를 호출하고 session.saveOrUpdate (상위)를 호출하면 물론 작동하지 않고 하위 제거를 지정하지 않으면 하위가 데이터베이스에서 삭제되지 않습니다.
고아 제거에 대한 대안으로, 내가 session.delete (자식)가 DB에서 삭제 한 다음 (자식)을 목록에서 제거하고 그 다음에 session.refresh (부모) 그래서 내 부모 객체는 메모리에 올바른 상태가 있습니까?
자식을 올바르게 제거하고 고아 제거없이 데이터베이스에서 삭제 한 방법은 무엇입니까? 나는 현재 내 ParentDao 이것에 대해 생각하고
은 : (최대 절전 모드에서)
이 지역 @Cascade (DELETE_ORPHAN)를 할 예정으로public void removeChild(Parent parent, Child child) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
try {
session.beginTransaction();
session.delete(child);
session.getTransaction().commit();
parent.getChildren().remove(child);
session.refresh(parent);
} catch (RuntimeException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
}
실제로 내 주요 질문은 : 수동으로, DELETE_ORPHAN없이 어떻게합니까? – karrjin
죄송합니다.하지만 수동으로해야하는 이유는 무엇입니까? – leozin
나는 그것을 더 잘 이해하려고 노력하고있다. – karrjin