2015-02-12 2 views
-3

я получил домен, как это:имя Groovy опрошено

ZZPartAndTeam 
    String parts 
    String team  

части может иметь много команды.

For ex: part:part1 team:10 
     part:part1 team:20 
     part:part2 team:30 

Как я могу запросить в домене, который получает все части, которые имеют несколько команд?

result:part:part1 team:10 
     part:part1 team:20 

Спасибо.

+2

что вы пробовали? что такое «многопользовательская команда»? в вашем «домене» есть «String parts», а позже вы говорите о 'part:'. этот пример неполно усложняется – cfrick

ответ

0

Предложение HAVING не поддерживается критериями спящего режима. Способ использования DetachedCriteria.

  import org.hibernate.criterion.DetachedCriteria as HDetachedCriteria 

      query: { builder, params -> 

       // This query counts the number of teams per part 
       HDetachedCriteria innerQry = HDetachedCriteria.forClass(ZZPartAndTeam.class) 
       innerQry.setProjection(Projections.projectionList() 
        .add(Projections.count('team').as('teamCount')) 
      ) 
       innerQry.add(HRestrictions.eqProperty('part', 'outer.part') 

       // Using innerQuery, this criteria returns the parts having more than one team. 
       HDetachedCriteria outerQry = HDetachedCriteria.forClass(ZZPartAndTeam.class, 'outer') 
       outerQry.setProjection(Projections.projectionList() 
        .add(Projections.distinct(Projections.property('part').as('part'))) 
      ) 
       outerQry.add(Subqueries.gt(1, innerQry)) 

       builder.addToCriteria(Property.forName('part').in(outerQry)) 
      } 
Смежные вопросы