首页 > 解决方案 > Hibernate如何构建sql查询?

问题描述

我在 Postgres 11 中有以下查询

SELECT DISTINCT ON (account.name) *
FROM sys_accounts AS account 
  INNER JOIN sys_activities AS activity ON account.guid=activity.account_guid 
WHERE activity.datefinish IS NOT NULL 
  AND (extract(day from NOW() - activity.datefinish)) > 60 
  AND dc_status_guid='df11a68c-20d3-46e2-840f-2e4548aacf1b'  
ORDER  BY  account.name,activity.datefinish DESC

如何通过 Hibernate (5.4) 运行它

我需要获取上一个任务在 60 天前关闭的所有帐户

Java结构如

Account (oneToMany){
                    Activity1 :finishdate |stage ....
                    Activity2 :finishdate |stage ....
                    ......
                   }

我不明白如何使用休眠语法 HQL 或 CRITERIA 编写此请求。使用 HQL 我得到错误:引起:org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:在第 1 行附近,第 17 列 [SELECT DISTINCT ON (account.name)* FROM sys_accounts AS account INNER JOIN sys_activities AS 活动在 account.guid=activity.account_guid WHERE activity.datefinish 不为 NULL 并且 dc_status_guid='df11a68c-20d3-46e2-840f-2e4548aacf1b' ORDER BY account.name,activity.datefinish DESC]

标签: sqlpostgresqlhibernatehibernate-criteria

解决方案


推荐阅读