2015-10-08 45 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