2014-06-11 8 views
1

최대 절전 모드 4.2를 사용합니다.javax.persistence.OneToMany를 사용하여 최대 절전 모드 4에서 계단식 업데이트를 설치하는 방법은 무엇입니까?

OneToMany 주석의 최대 절전 모드를 제공하지 않지만 단지 javax.persistence.OneToMany 만 제공합니다. 내가 자식 컬렉션은 캐스케이드 MERGE 업데이트 할 것으로 예상 부모의 갱신을 수행 할 때

그래서 나는

public class Parent { 
     ........... 
    @OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE }) 
     private Set<Child> children = new HashSet<Child>(); 

로 사용합니다.

session.update(parent); 

그러나 자식 컬렉션의 아이 엔티티를 업데이트하지 않습니다. Parent 엔티티에 대한 update 문만 보냅니다.

그래서 children 컬렉션의 하위 엔티티를 어떻게 업데이트 할 수 있습니까?

org.hibernate.annotations.CascadeType은 javax.persistence.OneToMany에서 지원되지 않기 때문에 사용할 수 없습니다.

답변

3

작동

@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY) 
@Cascade({CascadeType.PERSIST, CascadeType.MERGE, CascadeType.SAVE_UPDATE}) //example 
private Set<Child> children = new HashSet<Child>(); 
1

persist 또는 merge 대신에 모든 것을 시도 했습니까?

@OneToMany(orphanRemoval = true, cascade = {CascadeType.ALL}, fetch = FetchType.LAZY) 

아버지가 제거 될 경우를 대비하여이 아동을 삭제하려는 경우를 대비하여보십시오. 당신은 최대 절전 모드의 CascadeType을 사용하여 필드/메소드 레벨에 별도로 @Cascade(..)를 정의하려면 내 예에서