我一直在讨论这个问题几天没有取得多少成就。我想在对象和一些接口之间创建一个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 :(得分: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() { }
}
...