원하는 형태
여러 자식 테이블들의 1개 로우가 부모 테이블 로우 1개를 바라보는 형태
1 | Item : row 1개, pk=1 |
결과적으로, 상속으론 저렇게 할수없다.
상속을 사용하면 완벽한 식별관계를 형성해서 자식(상속에서) 로우에 맞춰 부모 로우도 같이 생성하기 때문이다.
하긴 객체지향에서도 자식 생성시 부모 인스턴스 생성하니까 당연한 소리인가…
구현
@OneToOne Eager를 사용하면 위의 형태를 구성할 수 있다.
기본적인 @OneToOne 을 사용하면 위의 관계를 외래키를 이용해서 유지하게 되는데,
만약 정말 위처럼 완벽한 식별관계의 형태로 유지하고 싶다면 @PrimaryKeyJoinColumn
을 사용하면 된다.
1 |
결과적으로 JPA 엔티티 상속의 기능은 딱히 특별할것이 없다… 는 결론입니다.
자식 테이블의 여러 로우들이 부모 테이블 로우 1개를 바라보는 방식
이건 잘못 생각한 것이다.
여러 로우에서 1개의 로우를 바라보려면 외래키로 연결되어야 한다
@ManyToOne Eager 를 사용해야 할 듯
여러 자식 테이블들의 여러 로우들이 부모 테이블 로우 1개를 바라보는 방식
이 또한 잘못 생각한 것
@ManyToOne Eager 를 사용해야 할 것이고, @DiscriminatorValue가 추가적으로 필요할 것이다