2012-04-26 43 views
0

我已經繞了幾天而沒有真正實現。我想創建一個對象和一些接口之間的OneToMany關係。這是基本的例子創建一個接口的OneToMany映射

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() { } 
} 

我肯定能做到這樣的查詢來獲取所有ContactFacade對於給定聯繫人:

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

但我一直沒能真正將其映射爲一個屬性到另一個班級。是否可以做到這一點?有另一種方法嗎?我真的很討厭將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() { } 
} 
...