Hibernate 를 사용하다가
HibernateException – A collection with cascade=”all-delete-orphan” was no longer referenced by the owning entity instance
Your likely problem
Looks like you have a Parent entity and a Child entity. The Parent has a collection of Child entities with cascade=”all-delete-orphan”.
You are setting a new collection via the setter thus leaving the original collection unreferenced by the Parent entity. This doesn’t fly well with Hibernate and leaves it confused about what to do.
parent.setChilden(new HashSet<Child>()); // This won’t work. Could be an ArrayList too.
parent.getChildren().clear(); // There, fixed that!
So generally speaking, just clear out the old collection, rather than dereferencing it and creating a new one.
정리를 해보면, 필드에 새로 생성된 빈 Set 객체를 넣으려고 할 때 문제가 발생을 하는데,
초기화하려고 하는 Set 객체에서 clear() 메소드를 호출해주면 된다는 것이다.
관계정의 옵션으로
orphanRemoval=true, cascade=CascadeType.ALL
의 관계가 주어졌을 때 나타나는 증상으로 보인다.
'Java > Framework & Libs' 카테고리의 다른 글
DispatcherServlet DI 전략 마인드맵 (0) | 2013.02.03 |
---|---|
Spring, Controller에서 사용하는 Form을 Session에서 유지하고 사용하기 (1) | 2012.08.28 |
openJpa, nonfatal user error 발생시, persistence.xml 에 Item을 추가하세요. (0) | 2011.11.14 |
'Simple' Framework를 이용하여 자바 객체를 XML로 변환하기 (0) | 2011.11.07 |
Maven을 이용하여 간단하게 Struts2 프로젝트 생성하기 (0) | 2011.10.12 |