假设我有这样的类,它们被映射到SQLServer:
class Statistic {
Servicos servico
int totalTime
Date date
static constraints = {
}
}
class Servicos {
String name
String description
static constraints = {
}
}像这样使用SQL查询:
select name, description, media,frequencia from TvMagazinePlus.dbo.servicos as t1 join (
SELECT TOP 1000
[servico_id]
,avg([total_time]) as 'media'
,COUNT([servico_id]) as 'frequencia'
FROM [TvMagazinePlus].[dbo].[statistic] where date between now and yesterday group by [servico_id]) as t2 on t1.id = t2.servico_id我得到了这张表:

现在我需要在JSON中呈现结果。我的问题是,我发现executeQuery太难做到这一点。有没有什么办法可以像createCriteria一样使用HQL来做这件事?
发布于 2011-12-15 06:51:30
您可以轻松地在beans列表中设置结果,然后使用任何框架(如Jackson或其他框架)在JSON中序列化它们……
我不知道grails,但是根据Hibernate文档,你可以使用条件来执行子查询:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querycriteria.html
DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)
.setProjection( Property.forName("weight").avg() );
session.createCriteria(Cat.class)
.add( Property.forName("weight").gt(avgWeight) )
.list();这显然会返回体重大于平均猫体重的猫,使用子查询来获得该猫的平均体重。
要将结果映射到可序列化的XML/JSON bean中,只需在该条件上使用AliasToBeanResultTransformer,然后序列化对象即可。)
https://stackoverflow.com/questions/8512558
复制相似问题