[英]Grails createCriteria and executeQuery
假設我有被映射到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做到這一點?
您可以輕松地將結果設置為bean列表,然后使用諸如Jackson之類的任何框架或JSON序列化它們。
我不知道grails,但是根據hibernate文檔,借助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,然后序列化您的對象;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.