【问题标题】:change sql into HQL把sql改成HQL
【发布时间】:2013-05-30 20:00:00
【问题描述】:

我有下面的sql语句

select items.id, ((sum(today.view_cnt) - sum(yesterday.view_cnt)) as point
from items
left outer join stats yesterday 
on items.id = yesterday.items_id
and yesterday.base_date>='2013-05-29' and yesterday.base_date < '2013-05-30'
left outer join stats today   
on items.id = today.items_id

and today.base_date >='2013-05-29' and today.base_date < '2013-05-30'
group by items.id
having sum(yesterday.view_cnt) >150
order by point desc

我想把它改成 HQL 语句。 其中一些我不知道如何更改为 HQL。

Criteria criteria = getSession().createCriteria(Stats.class, "seriesStats");

Criteria itemCriteria = criteria.createCriteria("items", "items", RIGHT_OUTER_JOIN, Restrictions.eq("items.id", ???? ));   ----> 

// 我想做如下的sql查询 // 昨天在 items.id = 昨天.items_id 上的左外连接统计数据

criteria.setProjection(Projections
            .projectionList()
            .add(Projections.???????)  --> 

             ((sum(today.view_cnt) - sum(yesterday.view_cnt)) as point


            .add(Projections.groupProperty("items.id")));

否则,我应该使用“查询”而不是“标准”吗? 我想知道我应该如何将 sql 语句更改为 Criteria 或 Query?
请告诉我。 谢谢。

【问题讨论】:

  • 您不是在尝试转换为 HQL,而是转换为 Hibernate 标准,对吧?

标签: java sql hibernate


【解决方案1】:

您可以使用session.createSQLQuery("native sql query")hibernate 中触发纯原生sql。

供参考

link1

link2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    相关资源
    最近更新 更多