2012-01-07 1 views
2

일반적인 문제가 발생했습니다. 객체 간의 일반적인 1-N 관계를 상상해보십시오. 정확한 사용자 (U) 및 방 (R) : [U] * --- 1 [R].JPA MappedSuperclass with ManyToOne

여기에서 문제가 발생합니다. 방은 BlueRoom, RedRoom과 같은 구현이있는 추상 기본 클래스 여야합니다. 사용자 엔터티 내에서 관계를 올바르게 설정하는 방법은 무엇입니까?

public interface Room { ... } 
@MappedSuperclass 
public abstract class RoomSuperclass implements Room { ... } 
@Entity 
public class BlueRoom extends RoomSuperclass { ... } 
@Entity 
public class RedRoom extends RoomSuperclass { ... } 


@Entity 
public class User { 

    @ManyToOne(targetEntity = ???) // I don't know if it will be BlueRoom or RedRoom 
    private Room room; // ManyToOne cannot be applied on mapped superclass 
} 

나는이 아마 대신 @MappedSuperclass의 RoomSuperclass에 @Entity을 사용하여 해결할 수 있습니다 알고 있지만 나는 그것이 좋은 해결책이 있는지 확실하지 않습니다 하나 더 나은이 있다면.

+1

네, 그게 해결책입니다. 당신이 무언가와 관련이 있다면,이 무언가는 실재물이어야합니다. –

+0

답장을 보내 주셔서 감사합니다 JB, 나는 다른 사람이 대답을하고 질문을 닫으면 하루 두시간을 기다릴 것입니다. – d1x

답변

1

게시물 아래의 해설에 따르면. @Entity로 수퍼 클래스를 선언하는 것이 해결책입니다.

+0

@MappedSuperclass가 무슨 목적인지 설명해 주시겠습니까? – salocinx

+1

나는 똑같은 망할 것을 궁금해. 나는 내 추상 엔티티를 테이블에 매핑하고 싶지 않기 때문에이 주석을 사용하려고 반나절 동안 벽에 머리를 대고있다 !!!! 그것은 추상적입니다! 하지만 아니요, 상속을 사용하려면 매핑 된 항목을 지정해야합니다. 따라서이 주석은 무엇을 위해 만들어 졌습니까? – Alex