2012-06-18 43 views
2

我想通過從搜索值中獲取輸入來使用Criteria API來選擇實體。文檔可以有更多的收件人。收件人有很多子類Java Hibernate Criteria select子類

@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連接它們。有沒有一種優雅的方式?

問候 米

+0

請加 –

+0

你有沒有嘗試過的東西註釋的模型類,並沒有奏效? – maksimov

+0

這可能會有所幫助 - [鏈接](http://stackoverflow.com/questions/2252468/hibernate-criteria-and-multiple-join) –

回答

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)); 
+0

非常感謝! – mkuff