查询的 Groovy 名称

Posted

技术标签:

【中文标题】查询的 Groovy 名称【英文标题】:Groovy name queried 【发布时间】:2015-04-12 21:07:02 【问题描述】:

我有一个这样的域:

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

谢谢。

【问题讨论】:

到目前为止您尝试过什么?什么是“多团队”?你的“域”有String parts,后来你谈到part:。这个例子不完整很难理解 【参考方案1】:

Hibernate Criteria 不支持 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))
          

【讨论】:

以上是关于查询的 Groovy 名称的主要内容,如果未能解决你的问题,请参考以下文章

groovy 的常用操作

hibernate查询之Criteria实现分页方法(GROOVY语法)

groovy 的常用操作

groovy 的常用操作

使用 GPath 深度遍历字符串中带有点的 Groovy 对象的方法

xml Apache NiFi的模板,它使用带Groovy的ExecuteScript发出SQL查询并生成包含CSV表示的流文件o