15

ダイアグラム

上の図は、データベース構造の簡略化されたバージョンであり、時間の経過とともにアイテムの場所をログに記録するために使用します。各場所の現在のアイテム在庫を返す次のSQLクエリを作成しました。

select * 
from ItemLocationLog l
inner join 
(select g.idItemLocationLog, max(g.dateTime) as latest
from ItemLocationLog g
group by g.idItem)
as i 
on l.idItem = i.idItem and l.dateTime = i.latest

私が抱えている問題は、それをHQLに変換したいのですが、サブクエリでINNER JOINを実行する構文が見つからず、これはサポートされていないようです。上記をHQL(またはCriteria)に変換する方法はありますか、それともこの場合は標準のSQLクエリを使用する必要がありますか?ありがとう。

4

1 に答える 1

15

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-subqueries

HQLサブクエリは、select句またはwhere句でのみ発生する可能性があることに注意してください。

サブクエリが代わりにwhere句の一部になるように、クエリを書き直すことができます。サブクエリでl.idItemを参照する

于 2012-05-16T21:32:48.203 に答える