首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails createCriteria和executeQuery

Grails createCriteria和executeQuery
EN

Stack Overflow用户
提问于 2011-12-15 06:22:08
回答 1查看 1.1K关注 0票数 0

假设我有这样的类,它们被映射到SQLServer:

代码语言:javascript
复制
class Statistic {
    Servicos servico
    int totalTime
    Date date

    static constraints = {
    }
}

class Servicos {

    String name
    String description

    static constraints = {
    }
}

像这样使用SQL查询:

代码语言:javascript
复制
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来做这件事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-15 06:51:30

您可以轻松地在beans列表中设置结果,然后使用任何框架(如Jackson或其他框架)在JSON中序列化它们……

我不知道grails,但是根据Hibernate文档,你可以使用条件来执行子查询:

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querycriteria.html

代码语言:javascript
复制
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,然后序列化对象即可。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8512558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档