2012-01-09 3 views
4

나는 임베디드 클래스 ABC를 다른 임베디드 클래스 XYZ로부터 확장했다. ABC의 객체는 엔티티에 포함되어 있습니다. 엔티티에 해당하는 테이블에는 ABC의 요소 만 포함되고 XYZ는 포함하지 않습니다. 또한 그들을 갖기 위해 무엇을해야합니까?JPA에서 Embeddable 클래스 확장하기

Descriptor Customizer가 작동한다고 들었습니다. 어떻게해야합니까? 다른 방법이 있습니까?

+0

오류가 발생하여 테이블에 필요한 열을 추가하십시오. ABC가 XYZ를 확장하면 XYZ이므로 XYZ의 모든 필드가 테이블에 필요합니다. 필요하지 않으면 ABC에서 XYZ를 확장해서는 안됩니다. –

+0

ABC는 XYZ를 확장하는 유일한 클래스가 아닙니다 –

+0

그래서? 내 요점은 남아있다. 다른 확장 클래스에 동일한 문제점이있는 경우 XYZ를 확장해서는 안됩니다. –

답변

0

XYZ의 DescriptorCustomizer에서 InheritancePolicy 클래스 인디케이터 필드를 설정해야합니다. 그런 다음 XYZ를 확장하는 ABC에 대한 집계 설명자를 정의해야합니다.이를 위해 SessionCustomizer가 필요할 수 있습니다.

1

This document of oracle javaEE 도움을 받으실 수 있습니다. 이에 따르면 InheritanceType.SINGLE_TABLE은 기본 전략입니다. 요구 사항에 따라 InheritanceType.TABLE_PER_CLASS가 필요할 수 있습니다.

이 내용은 Entity Inheritance Mapping Strategies 주제에 설명되어 있지만 'Embeddable'에서도 작동 할 수 있다고 생각합니다.

0

누군가이 DescriptorCustomizer를 작성하는 방법에 대한 예제를 제공 할 수 있습니까? XYZ 클래스에는 일련의 문자열과 uid가 있습니다. XYZ의 필드를 표시하는 ABC가 포함 된 개체를 가져올 수 없습니다. (내가 할 수 있었던 유일한 방법은 모든 XYZs 필드에 대해 ABC에 게터를 넣는 것입니다.)