我们使用Postgresql作为我们的数据库引擎。我有一个日志表,通过各种soap端点的活动时间戳维护日志。我需要生成一个状态屏幕,显示每个端点发送的总故障和总消息。
我创建了SQL,可以产生所需的结果。我需要把它变成HSQL并挣扎。我有两个不同的日期范围和2个不同的计数从每个日期范围生成。
我一直在研究这个问题,似乎我需要有多个投影,每个投影一个,以及详细说明该计数的日期范围的多个标准。我发现的所有例子都涉及一个与它相关的标准和预测的计数。解决方案是什么?
这是我的SQL
select ep.url, count(case when result = 'FAILED' AND activity_date = DATE(NOW()) AND activity_date > timestamp '2017-01-16 11:00:00' then 1 else 0 end) as failed_last_hour,
count(case when result = 'COMPLETED' AND activity_date = DATE(NOW()) AND activity_date > timestamp '2017-01-16 11:00:00' then 1 else 0 end) as completed_last_hour,
count(case when result = 'FAILED' AND activity_date = DATE(NOW()) AND activity_date > timestamp '2017-01-16 00:00:00' then 1 else 0 end) as failed_today,
count(case when result = 'COMPLETED' AND activity_date = DATE(NOW()) AND activity_date > timestamp '2017-01-16 00:00:00' then 1 else 0 end) as completed_today
from endpoint_log log
left join routing_endpoint ep ON log.endpoint_id = ep.id
group by ep.url
order by ep.url;
它计算SQL中的预期日期,但我希望计算正确的日期并将其作为参数提供给查询。
我还打算使用一个Transform,这样我就可以让它返回带有结果的对象。
感谢您对此有任何帮助。我发现Hibernate相对容易使用,但从未尝试过使用Projections。我假设我可以像编写的那样实现SQL,但我想至少尝试在放弃之前使用Hibernate。