2011-12-30 10 views
4

以下のSQLクエリをhibernate hqlに書き込もうとしています。私は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

なぜあなたは、あなたがしようとしたものを私たちに示していませんか? –

+0

私はこのようなユーザ、abc、max(abc.uploadDate)USERSユーザ、ABC abcからabc.userId = user.userIdを選択しました。GROUP BY abc.abcId having max(abc.uploadDate) – DonX

+0

まあ、このクエリは根本的に異なる。それは同じことを返すことさえありません。なぜあなたはSQLを文字通り翻訳しないのですか? –

答えて

4

私はsession.createSQLQuery(String sqlQuery)はあなたのために働くかもしれないと思う... see an example here

+0

ありがとうございます。現在、私は上記の1つを使用しており、アプリは正常に動作しています。さらに近い将来、私たちはデータベースをmysqlに変更する予定です。ですから、単純なデータベース・ドライバーの変更ではなく、その時のコードに触れたくはありません。 – DonX

+0

それはあなたが多くを変える必要がない休止状態の美しさです。ちょうどいくつかのプロパティ。これはあなたの問題を答えとして受け入れることができるので、これは他の人にとっても有益なものになることができます。オプションで、アップヴォートすることもできます...もちろん、それは必須ではありません:D ... :) – aProgrammer

+1

Thanks Amit。私はupvotedしました。この質問自体を聞く前に、私はcreateSqlを使って完了できることをよく知っていました。私の意図は、hqlで書くことです(前のコメントを見てください)。だから私は答えとしてこれを受け入れるつもりはない。 – DonX