2012-04-26 21 views
0

私は実際に多くを達成することなく数日間これを回ってきました。私はオブジェクトといくつかのインターフェイスの間にOneToMany関係を作成したいと思います。インターフェイスのOneToManyマッピングを作成する

SELECT package.name.ContactFacade WHERE contact.id = :theid 

しかし、私は実際に属性としてそれをマッピングすることができていない:これは、私は確かにこのようなクエリが指定された連絡先のすべてのContactFacadeを得るために行うことができます基本的な例

public class Contact { 
    @OneToMany(mappedBy = "contact") 
    private List<ContactFacade> facades; 
} 

public interface ContactFacade { 
    public Contact getContact() { } 
} 

public class ContactFacebook implements ContactFacade { 
    @ManyToOne 
    private Contact contact; 
    public Contact getContact() { } 
} 

public class ContactTwitter implements ContactFacade { 
    @ManyToOne 
    private Contact contact; 
    public Contact getContact() { } 
} 

です別のクラスにこれを行うことはすべて可能ですか?別の方法がありますか?私は本当に質問にちょうどContactの内部のエンティティを維持することを嫌うだろう。

答えて

0

ContactFacadeを抽象的なContactクラスに関連付け、それに続くファサードがそれぞれgetContact(..)を実装するようにします。

public interface ContactFacade { 
    public Contact getContact() { } 
} 

@Entity 
@Inheritance 
public abstract class Contact implements ContactFacade { 
private Set<Contact > contacts; 

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "contact") 
    public Set<Contact> getContacts() { 
     return notes; 
    } 
} 

@Entity 
public class ContactFacebook extends Contact { 
    @ManyToOne 
    private Contact contact; 
    public Contact getContact() { } 
} 
... 
関連する問題