2015-10-08 46 views
0

我有兩個實體:Hibernate的標準外鍵列表

public class Document implements java.io.Serializable { 
    private Long id; 
    private String info; 
    private Set<Tag> tags = new HashSet<Tag>(0); 
} 

public class Tag implements java.io.Serializable { 
    private Long id; 
    private String name; 
    private Set<Document> documents = new HashSet<Document>(0); 
} 

文件可以有多個標籤,每個標籤可以包含多個項目。 現在我想要做一個篩選功能來找出所有文件都有tag1(id = 1)tag2(id = 2)

我試圖用這些限制:

Criteria criteria = session.createCriteria(Document.class, "doc") 
          .createAlias("doc.tags", "tag"); 

List<Document> docList = criteria.add(Restrictions.eq("tag.id", 1)) 
           .add((Restrictions.eq("tag.id", 2)).list(); 

,但他們沒有工作,列表是空的。有沒有一個好的解決方案?

回答

0

您正在尋找,ID爲1 2.標籤這是不可能使用Restrictions.in("tag.id", Arrays.asList(1, 2))

+0

Restrictions.in()是析取幾乎相同。這將給我所有的文件有標籤1或標籤2.我的條件是1 && 2。 – zzyclark