2

Criteria API を使用して、検索値から入力を取得してエンティティを選択したいと考えています。ドキュメントには複数の受信者を含めることができます。受信者には多くのサブクラスがあります

@Entity
public class Document implements Serializable {
  @OneToMany(mappedBy="document")
  private List<Recipient> recipients = new ArrayList<Recipient>();


@Entity
public class RecipientAccount extends Recipient {
  String name;

特定の名前の ReciepientAccount を持つすべてのドキュメントを選択するにはどうすればよいですか? すべてのサブクラスを検索し、それらを OR で接続する必要があります。エレガントな方法はありますか?

こんにちは

4

1 に答える 1

6

以下が機能するはずです。

Criteria c = session.createCriteria(Document.class, "document");
c.createAlias("document.recipients", "recipient");
c.add(Restrictions.in("recipient.class", Arrays.asList(SubClass1.class, 
                                                       SubClass2.class,
                                                       SubClass3.class)));
c.add(Restrictions.eq("recipient.name", theName));
于 2012-06-18T14:13:42.367 に答える