【发布时间】:2018-02-06 14:35:38
【问题描述】:
我需要从已使用 Hibernate 映射到 Java 的 PostgreSQL 数据库中检索记录的平均日期差异(开始和结束,如您所说)。
我写了一个运行良好的原生 PostgreSQL 查询:
SELECT avg(date_part('days', age(datasaida, dataentrada))) as avg_days
FROM processo.processo
WHERE processo.codsituacao = '14'
AND processo.dataEntrada >= now() - interval '30 days';
问题是由于avg(date_part('days', age(datasaida, dataentrada))) 部分,我无法弄清楚如何将此查询转换为 HQL(Hibernate SQL)。
我需要在前端显示信息,这是我使用 JSF Primefaces 构建的。
P.S.:dataEntrada - 表示开始日期(种类)。 dataSaida 表示 endDate (种类)
【问题讨论】:
-
愚蠢的问题:为什么不使用 SQL 语句?
-
其实是个好问题。因为我们的团队正在开发/更新旧版 Web 应用程序,并且公司在处理查询时有自己的标准。我们的经理要求只使用 HQL 语句,因此我们保留了使用 Hibernate 的可移植性优势。
-
年龄是 Postgres 函数还是你创建的?
-
age() 是 PostGreSQL 函数。
-
这不会大大增加操作的处理时间吗?假设我在数据库中有 10 万条记录
标签: java postgresql hibernate jpa hql