2012-06-01 6 views
0

이 주석이 :캐스케이드가 최대 절전 모드 사용, 일부 PARAMS ("값 = ...")에 의해, DB에서 삭제 Bean 클래스에서

class User { 
     @OneToMany(targetEntity = Feedback.class,mappedBy = "user",cascade = 
     CascadeType.ALL,fetch = FetchType.LAZY) 
    private List<Feedback> feedbacks; 
     ... 
    } 

내가 어떤 의견을 가지고있는 사용자를 삭제합니다. 내가 이것을 입력하면 :

sessionFactory.getCurrentSession().delete(
sessionFactory.getCurrentSession().get(User.class, id)); 

사용자가 성공적으로 삭제됩니다 (ID는 기본 키)입니다. 하지만, 모든 사용자, 마녀을 삭제할 역할 = "admin"을 가지고 있고, 내가이 쿼리를 입력하면 :

String query = "DELETE from User WHERE role='" + role + "'"; 
    sessionFactory.getCurrentSession().createQuery(query).executeUpdate(); 

은 피드백에 대한 참조없이 사용자 만 삭제됩니다. 내 질문에 무슨 문제가 있니? 도와주세요.

답변

1

아무 것도 잘못되었습니다. HQL 삭제 쿼리는 연관을 "건드리지"않습니다. 그것은 JPA 스펙에 따른 것입니다.

Hibernate Jira에서 this issue을 검사하여 새 키워드 CASCADE를 추가 할 수 있도록 지원을 추가하여 삭제해야하는 연관을 지정하는 쿼리를 삭제하십시오.