2013-06-26 1 views
0

하위 엔티티에 일대 다 연관이있는 엔티티가 있습니다.삽입 대신 OneToMany 연결 업데이트

하위 엔터티에는 PK로 2 개의 열이 있고 열 중 하나는 부모 테이블에 대해 FK입니다.

매핑은 다음과 같습니다

@OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER) 
@JoinColumn(name="USER_RESULT_SEQUENCES.USER_RESULT_ID", referencedColumnName="USER_RESULT_ID",  unique=true, insertable=true, updatable=false) 
private List<UserResultSequence> sequences; 

나는 부모의 인스턴스를 생성하고 나열하는 어린이 인스턴스를 추가 한 다음 DB에 저장하려고합니다.

자식 테이블이 비어 있으면 모든 자식을 삽입하고 완벽하게 작동합니다. 자식 테이블이 비어 있지 않으면 기존 행을 업데이트합니다!

삽입물 대신 업데이트하는 이유, 이것이 일어날 수있는 이유는 무엇입니까?

감사합니다.

답변

0

사용자가 생성 한 새 부모가 기존 자식을 연결하기 때문에 발생합니다. 부모에게 추가 된 새로운 자녀 (DB에없는 자식)가있는 한이 것은 문제가되지 않습니다.

+0

그러나 2 행으로 구성된 하위 PK는 모든 행이 고유합니다! 내가 무엇이 부족합니까 ?? 그런데 Hibernate가 중복 된 컬럼에 대해 불평을하게하기 때문에 부모 PK는 자식 엔티티에 매핑되지 않는다. – Shvalb

+0

에는 고유 한 열 ('ID')이있는 상위 테이블에 삽입하는 방법이 있으며, 상위 테이블과 동일한 고유 'ID'및 하위 테이블의 PK를 구성하는 다른 열 값을 갖는 무료 하위 테이블을 추가 할 수 있습니다 ?? 나는 이렇게해야한다 그렇지 않으면 나는 부모를 위해 1 insert를해야하고 그 'ID'값을 얻고 모든 어린이들에게 배치 삽입을해야한다 - 그것은 Hibernate의 생각과 모순 될 것이다! – Shvalb