开源中国社区
找到您想要的开源软件,分享和交流 开源软件 新闻 讨论 博客

上一话题 | 下一话题 高手请帮忙把Hibernate中SQL转HQL,详细见内容

作 者话 题 正 文
小飞飞

广东 深圳

加入时间:2009-04-19
最近登录:1个月前

0人关注此话题, 我要关注(收藏)(?) 回复此话题 1楼 发表于 2009-09-16 13:07 (10个月前), 6回 /400阅, 最后回复:10个月前

以下是SQL SERVER 2000中编写的代码:

SELECT m.shoesid, m.shoesname, m.shoestype, m.shoessize, m.shoescolor, m.shoesprice, m.shoesstate, n.shoesNum
FROM Shoes AS m INNER JOIN
(SELECT a.shoesid, ISNULL(a.x, 0) - ISNULL(b.x, 0) AS shoesNum FROM
(SELECT shoesid, SUM(shoesnum) AS x FROM Stock AS ss GROUP BY shoesid) AS a
LEFT JOIN
(SELECT shoesid, SUM(salesnum) AS x FROM Sales AS cc GROUP BY shoesid) AS b
ON a.shoesid = b.shoesid) AS n ON m.shoesid = n.shoesid

其中:
表Stock ,Shoes ,Sales 为实体对象。
由于系统的数据库可能未知,而上面的SQL语句中用到了SQL SERVER 中特有的函数Isnull。所以如果我用原生SQL来做的话,换了个数据库系统肯定是不行的。
所以请帮忙用HQL实现以上语句,或者用Criteria实现也可以。不胜感激!

相关话题
返回顶部 回复此话题 |
红薯

广东 广州

加入时间:2008-08-31
最近登录:6小时前

2楼: 回复: 高手请帮忙把Hibernate中SQL转HQL,详细见内容     发表时间: 2009-09-16 13:09

Hibernate 并不能解决100%的问题,有些时候也要辅以 SQL

而且这个 SQL 那么复杂,还不如直接用 SQLQuery 直接处理了。

返回顶部 此回帖顶部 | 回复此话题
小飞飞

广东 深圳

加入时间:2009-04-19
最近登录:1个月前

3楼: 回复: 高手请帮忙把Hibernate中SQL转HQL,详细见内容     发表时间: 2009-09-16 13:45

引用来自“红薯”的帖子

Hibernate 并不能解决100%的问题,有些时候也要辅以 SQL

而且这个 SQL 那么复杂,还不如直接用 SQLQuery 直接处理了。

不可以用SQLQuery啊,因为这个SQL语句用到了SQLSERVER的函数ISNULL。如果我换了个数据库引擎,那就不行了,比如MYSQL。。。。明白我的意思了吧。

其实这个语句不复杂的。看看还有别的什么方法解决不了?

返回顶部 此回帖顶部 | 回复此话题
Jimmy

广东 广州

加入时间:2008-12-07
最近登录:14小时前

4楼: 回复: 高手请帮忙把Hibernate中SQL转HQL,详细见内容     发表时间: 2009-09-16 17:27

土方法就是把SQL拆成N个HQL,然后再在程序里去组吧~~~

返回顶部 此回帖顶部 | 回复此话题
小Break

陕西 西安

加入时间:2008-12-05
最近登录:3个月前

5楼: 回复: 高手请帮忙把Hibernate中SQL转HQL,详细见内容     发表时间: 2009-09-17 14:21

转化很简单,对应着你的映射文件就是了,但是要注意的是:在Hibernate 的HQL查询中,如果你要写上INNER JOIN , LEFT JOIN  这样的关键字的话,就必须专门做出映射文件来配置你inner join...on   on后面的条件。left join...on 同样,你写几个on 就要配几个文件。

返回顶部 此回帖顶部 | 回复此话题
小飞飞

广东 深圳

加入时间:2009-04-19
最近登录:1个月前

6楼: 回复: 高手请帮忙把Hibernate中SQL转HQL,详细见内容     发表时间: 2009-09-18 14:49

引用来自“小Break”的帖子

转化很简单,对应着你的映射文件就是了,但是要注意的是:在Hibernate 的HQL查询中,如果你要写上INNER JOIN , LEFT JOIN  这样的关键字的话,就必须专门做出映射文件来配置你inner join...on   on后面的条件。left join...on 同样,你写几个on 就要配几个文件。

 不会吧。这也太太那个了。我肯定是想走捷径了。

达到快速而有简介的目的,不想搞的那么复杂化。

返回顶部 此回帖顶部 | 回复此话题
小飞飞

广东 深圳

加入时间:2009-04-19
最近登录:1个月前

7楼: 回复: 高手请帮忙把Hibernate中SQL转HQL,详细见内容     发表时间: 2009-09-18 14:50

引用来自“Jimmy”的帖子

土方法就是把SQL拆成N个HQL,然后再在程序里去组吧~~~

 这个。。。可以是可以,但实在是繁琐,供参考用吧。

返回顶部 此回帖顶部 | 回复此话题
     爱护开源中国,请您和谐评论,谢谢!