Hibernate Criteria与所有子集合匹配

时间:2012-01-19 19:19:05

标签: hibernate

我在产品和标签之间有很多关系 产品类有一个'tags'集合,按照多对多的映射设置 我正在尝试获取与所有标签(不是任何标签)匹配的产品 以下内容将获取与任何标记匹配的所有产品。

Criteria crit = session.createCriteria(Product.class,"Prdct");  
   crit.createAlias("Prdct.tags","PT");  
crit.add(Restrictions.in("PT.Name",selectedTags));  
crit.list();  

如何使用条件执行此操作?

1 个答案:

答案 0 :(得分:0)

它仅对集合

有用
// get the count of tags matching the criteria
DetachedCriteria subquery = DetachedCriteria.For(Product.class)
    .add(Expression.eq("id","product.id"))
    .createAlias("tags","tag")  
    .add(Restrictions.in("tag.Name", selectedTags))
    .setProjection(Projections.count("PT.Name"));

// get the Products where there all tags match
Criteria crit = session.createCriteria(Product.class,"product")
    .add(Subqueries.eq(selectedTags.getCount(), subquery);