Критерии гибернации для сопоставления со всей дочерней коллекцией - PullRequest
1 голос
/ 19 января 2012

У меня есть спящий режим отношения многих ко многим между Product и Tag
Класс продукта имеет коллекцию 'tags'. Набор для сопоставления многих ко многим
Я пытаюсь выбрать продукты, которые соответствуют всем тегам (нелюбой из тегов)
следующий будет выбирать все продукты, которые соответствуют любому из тегов.

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

как это сделать, используя критерии?

1 Ответ

0 голосов
/ 23 января 2012

полезно только для наборов

// 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...