是否可以使用条件查询grails并接收地图列表而不是列表列表?我想在结果中使用列名称,然后使用“关联数组”而不是数组数组偏移。我目前做的事情是
def topFiveUsers = BlogEntry.createCriteria().list {
projections {
count('id')
groupProperty('author')
}
maxResults 5
}
结果为[[123, app.User:1][111, app.User:2][...]...]
,即列表列表。我宁愿想要像[[posts:123, author: app.User:1][posts: 111, author app.User:2][...]...]
这样的东西。
一如既往:非常感谢帮助!
答案 0 :(得分:30)
使用resultTransformer()。
参数使用CriteriaSpecification.ALIAS_TO_ENTITY_MAP
关于该主题的文档和示例很少。但这是一个例子:
import org.hibernate.criterion.CriteriaSpecification
BlogEntry.withCriteria {
maxResults 5
resultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP)
projections {
count('id', 'total')
groupProperty('author', 'author')
}
}
请注意,所有投影都需要别名。否则,生成的映射由空值组成。
答案 1 :(得分:2)
def topFiveList = []
topFiveUsers.each { rec ->
topFiveList << [posts: rec[0], author: rec[1]]
}
答案 2 :(得分:2)
def converted = topFiveUsers.collect{ [posts: it[0], author: it[1]] }