내 J2EE 응용 프로그램에 정확히 동일한 구현을 공유하는 약 10 개의 다른 엔터티가 있습니다. 그것들은 모두 @MappedSuperclass로 주석 처리 된 동일한 일반 추상 클래스를 상속하지만이 클래스에는 모든 구체적인 하위 클래스에서 반복 한 구현이 없습니다. 내가 할 수있는 경우구체적인 JPA 클래스간에 Java 구현을 공유하는 가장 좋은 방법은 무엇입니까?
, 나는이 추상 슈퍼 클래스의 모든 다양한 분야와 컬렉션을 넣어 때문에 너무 거기 구현 방법을 넣어 것 -으로 인해 JPA 제한으로, 그러나 10 대신 한 곳에서 모든 I cannot add JPA annotations to generic fields or accessors.
필자는 일반적으로 어쨌든 구현 상속에 위임하는 것을 좋아하지만, 컬렉션이있는 임베디드 엔티티를 가질 수 없다는 JPA의 다른 제한 사항으로 인해 델리게이트 사용에 대한 아이디어도 작동하지 않습니다.
이 엔티티 중 3-4 개와 2-3 가지 방법을 사용했을 때 큰 문제는 아니었지만 이제는 약 10-8- 약 7 가지 방법이 있습니다. 방법이 점점 복잡해지고 있습니다. 그리고 제가 사용하고있는 "cut-copy-paste"상속은 정말 짜증납니다.
다른 멋진 아이디어가 있습니까?
1 - "private List myfield"와 같은 제네릭 형식 매개 변수를 사용하는 매핑 된 필드가있는 수퍼 클래스를 갖고 있습니까? "T"는 추상 클래스의 매개 변수입니까? –
HDave
2 - 나는 그것을 시도했다. 그러나 당신의 생각은 내가 수퍼 클래스를 엔티티가 아니거나 mappedsuperclass가 아니게 만들지 않을지 궁금하게 만든다. JPA가 그것을 무시하면, 실제로 super.method()를 호출하고 구현을 모두 재사용하는 구체적인 서브 클래스에서 필드 주석 대신 속성 주석을 사용할 수 있습니다. – HDave