2012-04-09 2 views
2

나는 다음과 같은 기관이 있습니다JPA 추상적 인 관계로 2 Inheritance.TABLE_PER_CLASS

@Entity 
public class Owner{ 
@Id 
@Column(name = "OWNER_ID") 

    @OneToMany() 
    @JoinColumn(name = "OWNER_ID") 
    private Set<Parent> parents; 
    ... 
} 

@Entity 
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 
public class Parent{ 
    @Id 
    @Column(name = "PARENT_ID") 
    ... 
} 

@Entity 
public class ChildA extends Parent{ 
    ... 
} 

@Entity 
public class ChildB extends Parent{ 
    ... 
} 

}

문제는 내가 부모 요소와 소유자를 유지하려고 할 때 다음과 같은 예외를 얻을 수 있습니다 :

org.springframework.dao.InvalidDataAccessResourceUsageException : 콜렉션을 삽입 할 수 없습니다 : [sample.Owner.parents # 1]; SQL [업데이트 부모 세트 OWNER_ID =? 어디 PARENT_ID =?]; org.springframework.dao.InvalidDataAccessResourceUsageException : 콜렉션을 삽입 할 수 없습니다 : [sample.Owner.parents # 1]; SQL [업데이트 부모 세트 OWNER_ID =? 어디 PARENT_ID =?]; 중첩 예외는 org.hibernate.exception.SQLGrammarException입니다 : 컬렉션을 삽입 할 수 없습니다 : [sample.Owner.parents # 1] 중첩 예외는 org.hibernate.exception.SQLGrammarException입니다 : 컬렉션을 삽입 할 수 없습니다 : [sample.Owner.parents # 1 ]

상속 유형을 JOINED로 변경하면 올바르게 작동합니다. 자식 추상 클래스 대신 부모 추상 클래스를 유지하려고하는 이유에 대한 아이디어가 있습니까?

답변

2

Hibernate는 양방향으로 (2.2.4.1. Table per class)를 테이블 당 클래스 계층 구조에 다형성 협회가 필요합니다

public class Owner { 
    @OneToMany(mappedBy = "owner") 
    private Set<Parent> parents; 
    ... 
} 

public clas Parent { 
    ... 
    @ManyToOne 
    @JoinColumn(name = "OWNER_ID") 
    private Owner owner; 
    ... 
} 
+0

가 대단히 감사합니다, 당신이 정말로 묘책을 얻었다. – domgom