我使用进度条显示任务的完成百分比。要获得完成百分比,我使用countBy方法:
DomainA.countByZ(z) > 0 ? Status.COMPLETE : Status.INCOMPLETE
我有十个这样的查询。
每当我完成状态时,我会将计数器加1,最后除以10得到平均值。
获得达到10个数据库查询的百分比
select count(*) as y0_ from domain_a this_ where this_.z_id=?
select count(*) as y0_ from domain_b this_ where this_.z_id=?
...
有没有办法减少查询次数?(通过使用hql查询或任何其他方式来获得平均值或计数)。
我用Google搜索但未获得相关信息。
答案 0 :(得分:1)
如果我没有弄错,你不能使用HQL
来查询没有关系的实体,因此解决方案是在这种情况下使用本机sql。您可以在服务中执行此操作:
import groovy.sql.Sql
class MyService {
def dataSource
int myCalc() {
Sql sql = new Sql(dataSource)
String query = """
select count(*) tot1,
(select count(*) from domain_class2) as tot2
from domain_class1
"""
def row = sql.firstRow(query)
//access properties directly
println row.tot1
println row.tot2
}
}