创建接口的OneToMany映射

时间:2012-04-26 18:44:29

标签: hibernate jpa hql

我一直在讨论这个问题几天没有取得多少成就。我想在对象和一些接口之间创建一个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中的实体留在查询中。

1 个答案:

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