2012-02-01 2 views
3

인턴쉽을 위해 JPA 2.0 호환 키트로 작업합니다. 그 키트의 일부는 코너 케이스를 커버하는 것입니다.@MappedSuperclass와 @SecondaryTable을 결합하는 것은 허용됩니까?

@MappedSuperclass 엔티티가 아니기 때문에 원본 테이블이 없습니다. JSR-317 상태 흥미로운 비트 :

MappedSuperclass 주석으로 지정된 클래스는 더 테이블 매핑 된 슈퍼 클래스 존재하지 않기 때문에 매핑은 그 서브 클래스에 적용된다는 점을 제외하고 엔티티와 같은 방법으로 매핑 할 수 있습니다

그 자체.

"매핑 된 수퍼 클래스 자체에 대한 테이블이 없으므로."

"기본값 없음"을 의미합니까? 원하는 경우 자신의 테이블을 만들 수는 있지만 자체적으로 검색 할 수는 없습니까?

또는 "매핑 된 수퍼 클래스에 테이블이 존재할 수 없습니다"라는 의미입니까? 즉, 테이블을 만들 수 없습니다 (@SecondaryTable)?

JPA 2.0에 따르면 @MappedSuperclass 부분을 @SecondaryTable으로 매핑 할 수 있습니까?

+0

나는 이와 같은 질문에 대해 적은 양의 답변을 받았으며, 낮은 품질의 대답도 좋은 대답이라고 말하고 싶습니다. 이것들은 제가 말하고있는 모서리의 경우입니다. 대답을 얻지 못하면 문서에서 "불분명하다"라고 표시 할 수 있습니다.이 질문에 대한 링크와 JPA 2.0 구현자가 취해야 할 제안 된 경로가 있습니다. – Pimgd

답변

1

매핑 된 수퍼 클래스에서 @ SecondaryTable-annotation을 사용하고 있거나 맵핑 된 수퍼 클래스에 정의 된 속성을 사용하여 매핑을 유도하는 엔티티에서 @SecondaryTable 인 테이블에 유지되는 것이 확실하지 않으므로 두 가지 모두에 답하려고합니다.

매핑 된 수퍼 클래스에는 자체 테이블이 없습니다. 컨텍스트가 매핑 된 수퍼 클래스는 테이블을 정의하는 데 사용됩니다. 하나의 매핑 된 수퍼 클래스에서 여러 엔터티에 매핑을 상속하는 경우 항상 하나의 파생 엔터티를 제외하고 다른 모든 테이블의 이름을 재정의해야 할 필요가 있기 때문에 이는 의미가 있습니다. "매핑 된 수퍼 클래스에 대한 테이블이 없습니다"라고 생각하면 @SecondaryTable 아웃.

또한 JPA 2.0 사양 12.3 장의 XML 스키마는 매핑 된 수퍼 클래스에 대한 보조 테이블을 허용하지 않습니다.

엔티티에서 @AttributeOverride의 column-element를 사용하여 매핑 된 수퍼 클래스에서 파생 된 속성이 엔티티의 보조 테이블에 유지되도록해야합니다. 그러한 경우에 대해 이야기하는 명세에는 아무것도 없다.

"매핑 된 수퍼 클래스에는 테이블이 존재할 수 없다"는 것이 사실이지만 아무 것도 그 속성을 엔티티의 보조 테이블에 배치하지 못하게합니다. 컬럼에 대한 테이블에 대한 결정은 매핑 된 수퍼 클래스 자체가 아니라 속성 및 연관 매핑을 유도하는 엔티티에서 발생합니다.

관련 문제