2011-12-30 70 views
4

我想在hibernate hql中写一个下面的sql查询。我正在使用oracle数据库。Sql到Hql的转换

SELECT distinct u.user_id,u.user_name 
FROM (select abcId, max(upload_date) upload_date, user_id from ABC 
GROUP BY abcId, user_id) abc,users u WHERE abc.user_id=u.user_id 

我尽我所能在hql中编写它。不幸的是我无法成功。任何人都可以在我的hql中实现这个目标吗?

+0

你为什么不告诉我们你尝试过什么? – 2011-12-30 11:17:36

+0

我试过类似这样select user,abc,max(abc.uploadDate)from USERS user,ABC abc where abc.userId = user.userId GROUP BY abc.abcId having max(abc.uploadDate) – DonX 2011-12-30 11:24:58

+0

那么,这个查询是从根本上不同。它甚至不会返回相同的东西。为什么不从字面上翻译SQL? – 2011-12-30 11:32:13

回答

4

我认为session.createSQLQuery(String sqlQuery)可以为你工作... see an example here

+0

谢谢阿米特。目前我正在使用上面提到的一个,应用程序工作正常。不久的将来,我们计划将数据库更改为mysql。所以我不想在时间触摸代码,而不是简单地更改数据库驱动程序。 – DonX 2011-12-30 11:27:04

+0

这就是你不需要改变太多Hibernate的美丽。只是一些属性。它解决了你的问题,而不是你可以接受它作为回答,以便这对其他人也有用。或者,你也可以upvote ...当然这不是强制性的:D ... :) – aProgrammer 2011-12-30 11:33:29

+1

谢谢阿米特。我有upvoted。在问自己之前,我很清楚我可以使用createSql来完成它。我的意图是写在HQL(看我以前的评论)。所以我不会接受这个答案。 – DonX 2011-12-30 11:49:00