我需要从我的PostgreSQL数据库中检索,该数据库已经使用Hibernate映射到Java,记录的日期(开始和结束,如你所说)的平均差异。
我写了一个原生的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';
问题在于我无法弄清楚如何将此查询转换为HQL(Hibernate SQL),因为avg(date_part('days', age(datasaida, dataentrada)))
部分。
我需要在前端显示信息,我正在使用JSF Primefaces构建。
P.S。:dataEntrada - 表示startDate (种类)。 dataSaida表示endDate (种类)
答案 0 :(得分:0)
你可以尝试
avg(DAY(function('age', datasaida, dataentrada)))
or
avg(DAY(datasaid - dataentrada))
DAY是标准的JPA功能:http://www.objectdb.com/java/jpa/query/jpql/date
使用函数('age',datasaida,dataentrada),您可以从JPA调用数据库特定的函数
答案 1 :(得分:0)
您可以在HQL中使用SELECT avg(function('date_part', 'days', function('age', datasaida, dataentrada))) as avg_days
FROM processo.processo
WHERE processo.codsituacao = '14'
AND processo.dataEntrada >= now() - interval '30 days';
来调用本机Postgresql函数:
def fill_layout(images):
out_items = []
while len(out_items) <5 and images:
out_items.append(images.pop(0))
# do something to your 5 or less items in out_items
if images:
fill_layout(images)
有关详细信息,请查看the Call PostgreSQL-specific SQL Functions section的Hibernate with PostgreSQL – 6 things you need to know tutorial。