2014-11-15 2 views
0

하나의 트랜잭션 내에서 일부 엔티티를 저장합니다최대 절전 모드 - 나는 시나리오 다음 한

  • Entity1
  • Entity2
  • Entity3
  • Entity4

관계 :

Entity1 1...n Entity2 
Entity2 1...n Entity3 
Entity2 1...n Entity4 

이제 이러한 엔티티를 모두 저장해야하는 한 가지 방법이 있습니다. 현재 작업

전에 저장해야합니다 transient 인스턴스 -

null이 아니 속성은 과도 값을 참조 : 나는

현재
@OneToMany(mappedBy = "entity2", cascade = { PERSIST, MERGE, REMOVE }) 

내가 문제 다음있어 자동으로 Entity2, Entity3 및 Entity4을 저장하는 캐스케이드를 사용

이 시나리오가 가능합니까? 또는 Entity2와 함께 첫 번째 Entity1을 저장해야합니까? 아마

답변

0

유 자식 세터에 parentEntity 설정되지 ieyou 클래스 B에서 클래스 A를 설정해야합니다, 그래서 단일 통화의 모든 계층을 저장하면, 컬럼으로 매핑에 부모 엔티티를하지 않습니다

Class A{ 
    @OneToMany(mappedBy = "parent" , Cascade = cascadeType.All) 
    List<B> children; 

//children setter n getter 

} 

Class B{ 

@MAnyToOne 
private A parent; 

SetPArent(A a){ //like this you need to set for cascade saving. 
    this.parent = a; 
} 
} 

이제 Hibernate는 자식 테이블에 parent parent (foreign Id) 컬럼을 설정하는 것을 처리 할 것이고, 모두 단일 저장 호출로 저장할 수있다.