2012-11-21 2 views
0

이제 spring-data-jpa & 최대 절전 모드를 사용하고 있습니다. 과정에서 courseDetail을 삭제하고 싶습니다. 그러나 아래 코드를 실행 한 후에 courseDetail이 데이터베이스에 남아 있습니다.spring-data-jpa를 사용하여 데이터베이스에서 세부 사항 삭제

어떻게 이런 일이 일어 났는지 알 수 있습니까?

미리 감사드립니다.

@Transactional(readOnly = false) 
public void deleteCourseDetail(Long id, Long courseId) { 
    Course course = courseDao.findOne(courseId); 
    CourseDetail courseDetail = courseDetailDao.findOne(id); 
    System.out.println(course.getCourseDetails().size()); 
    course.getCourseDetails().remove(courseDetail); 
    System.out.println("after: " + course.getCourseDetails().size()); 
    courseDao.save(course); 
} 

@OneToMany(mappedBy = "course", fetch = FetchType.LAZY, cascade = {CascadeType.ALL}) 
public List<CourseDetail> getCourseDetails() { 
    return courseDetails; 
} 

이제는 courseDetailDao.delete (id)를 추가 한 후에 작동합니다. 뒤에 저장 방법. 하지만 왜?

+0

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/example-parentchild.html#example-parentchild-cascades를 방문하십시오. – 757071

답변

1

캐스케이드 유형으로 "delete orphan"이 있어야합니다.

courseDetails의 항목을 삭제하면 CourseCourseDetail 사이의 관계가 삭제됩니다. DB에서 courseDetail을 제거하는 것이 아닙니다.