0

这几天我一直在解决这个问题,但实际上并没有取得什么成就。我想在对象和某些接口之间创建 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在查询中保留一个实体。

4

1 回答 1

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() { }
}
...
于 2012-04-26T19:22:22.730 回答