2013-08-20 1 views
0

Я создаю приложение на Java с картой Play 2 и ebean ORM.Связать объект с несколькими объектами подкласса как одно отношение к суперклассу в JPA?

У меня есть класс сущностей Person, который связан с несколькими классов сущностей с супертипом Certificate, который является abstract@MappedSuperclass. В настоящее время я создаю отношения для каждого подкласса, например, так:

public class `Person` extends Model { 
    // elided... 
    @OneToMany 
    public List<SubType1> subType1s; 

    @OneToMany 
    List<SubType2> subType2s; 
    // elided... 
} 

и подклассы выглядеть следующим образом:

public class SubTypeGeneric { 
    // elided... 
    @ManyToOne 
    public Person person; 
    // elided... 
} 

То, что я хочу знать это: можно сгруппировать по подклассов лица списки в Person вместе в один суперкласс список, например так:

public class `Person` extends Model { 
    // elided... 
    @OneToMany 
    public List<SuperType> superTypes; 
    // elided... 
} 

ответ

1

нет, это не возможно. Связь между объектами, а не MappedSuperclasses. И если у вас есть OneToMany, это может быть обратная ассоциация только одного ManyToOne.

Если вы хотите этого, то сертификат должен быть аннотирован с @Entity и должен содержать ассоциацию ManyToOne с Person вместо всех подклассов.

+0

Я заметил, что когда у меня есть отношения как с сущностью супертипа, так и с сущностью подтипа, методы для получения отношений над суперклассами возвращают только те, и отношения подкласса должны выбираться отдельно. Я не думаю, что иметь «сертификат» как сущность и дать отношения с «Лицом» позволит мне добавлять и извлекать подтипы «Сертификат». – evanjdooner

+0

У меня нет опыта работы с EBean, но правильные реализации JPA получают все экземпляры сущностей, будь то экземпляры подклассов или нет, в такой ситуации. Таким образом, либо EBean неисправен, либо ваш код. –