查询的 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 名称的主要内容,如果未能解决你的问题,请参考以下文章
hibernate查询之Criteria实现分页方法(GROOVY语法)
使用 GPath 深度遍历字符串中带有点的 Groovy 对象的方法
xml Apache NiFi的模板,它使用带Groovy的ExecuteScript发出SQL查询并生成包含CSV表示的流文件o