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

を抽象 Contact クラスに関連付けContactFacade、それに拡張する各ファサードに 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 に答える