带有条件的休眠查询

Posted

技术标签:

【中文标题】带有条件的休眠查询【英文标题】:Hibernate query with Criteria 【发布时间】:2014-09-18 11:43:56 【问题描述】:

请任何人帮助我将以下 SQL 查询转换为 Hibernate:

Select * 
  from(select to_char(start_time, 'dd/mm/yyyy HH') st, 
             sum(success_count) 
         from GMO_DETAILS 
        where start_time between ? and ? 
        group by to_char(start_time, 'dd/mm/yyyy HH')
        order by sum(success_count) desc )
where rownum<=10

我尝试了很多选项,但没有一个按预期工作。

【问题讨论】:

【参考方案1】:

您不需要将其转换为 hql,您可以将您的 sql 与 SQLQuery 类一起使用。

这是一个例子

SQLQuery query = session.createSQLQuery(yourSql);
query.addEntity("_this", YoutEntityCalss.class);
query.list();

【讨论】:

感谢您的回复。但是我们正在摆脱对 SQL 的依赖,我们没有使用任何与 SQL 相关的东西。【参考方案2】:

使用Criteria API,意思是:

mapping the model entities rownum (pagination) 可以通过setFirstResultsetMaxResults 实现 对于sum 使用projections 添加where 子句你应该Restrictions

这基本上是阅读manual 的提示。

希望它不是太模糊,但没有任何特定的模型映射,这是我能做到的。

【讨论】:

以上是关于带有条件的休眠查询的主要内容,如果未能解决你的问题,请参考以下文章

一对多和一对多连续映射的休眠条件查询 - 表或视图不存在

休眠条件中的子选择

带有条件的休眠调用函数

休眠条件查询到 JPA 条件查询

休眠查询语言或使用条件?

带有子查询的休眠选择查询?