기본 @Entity가 있고 그 안에있는 모든 것이 포함 가능하므로 (내부의 모든 내용이 부모 없이는 의미가 없으므로) 일반적인 시나리오가 있습니다. 이제 JPA 2.0은 둥지에 다른 @ElementCollection에 정의 된 @Embeddable 내부 @ElementCollection 나를 차단 :Embeddable 및 ElementCollection 중첩
JSR-317 또 다른 내 임베디드 클래스를 포함 포함 가능한 클래스와 기본 유형 퍼갈 클래스 (2.6 컬렉션 임베디드 클래스)는 요소 컬렉션을 포함 할 수 없으며 다 대일 또는 일대일 관계가 아닌 엔티티에 대한 관계를 포함 할 수 없습니다.
이제 질문 이유는 무엇입니까? 간단한 예 :
@Entity
public class Tournament {
@Id
Long id;
@ElementCollection
@CollectionTable
private List<Edition>;
}
@Embeddable
public class Edition {
@ElementCollection
@CollectionTable
private List<Round>
}
@Embeddable
public class Round {
blabla;
}
무엇이 문제입니까? 이것은 단지 예일 뿐이며, 라운드와 에디션을 엔티티로 정의하고 문제를 해결할 수 있습니다. 그러나 여러 가지 이유로 제 경우에는 부모가 없으면 매우 중첩 된 것을 이해할 필요가 없습니다.
왜 JPA 2.0에서이 작업을 중단해야합니까? 따라서
판 자체 @Embeddable이며, 원형의 요소의 컬렉션을 포함하고 :
질문에 썼 듯이 모델에 필요합니다. 토너먼트가없는 버전은로드 할 수 없어야하며, 토너먼트가없는 경우에는 버전이 존재할 수 없습니다. ER 다이어그램에서 잘 알려진 [Weak Entity] (http://en.wikipedia.org/wiki/Weak_entity)의 개념이지만 JPA에서는 제대로 구현되지 않은 것처럼 보입니다. JPA에서 왜 구현 가능한 요소 콜렉션을 더 많이 포함 할 수 없는지 이해하려고 시도했습니다. 구현 문제가있을 수 있습니다. 실제 상황을 설명하는 일반적인 방법입니다. – Francesco
자세한 답변을 보내 주셔서 감사합니다.결국 Embeddable은 약한 엔티티의 아이디어와 정확히 일치하지 않습니다. 약한 엔티티는 외부 엔티티와 자신의 ID로 구성된 합성 기본 키를 가져야하며 이는 Embeddable 객체에 해당하지 않습니다. 약한 개체를 매핑하는 데 더 직접적인 것이 있다고 생각했지만 마지막 옵션은 가장 합리적이라고 생각합니다.하지만 잘못되었습니다. – Francesco