0

私が読んだことについては、HQL / Hibernate でサブクエリをネストできない場合があります。

グループに属している価格の記事のテーブルがあるとしましょう。それらをすべて追加したいのですが、記事のグループごとに上限までしか追加できません。実際には、テーブルは非正規化されているため、article テーブル内のグループの最大金額が既に存在します。

したがって、SQL は次のように単純になります。

SELECT SUM(case when max_amount is null then price
when price<max_amount then price
else max_amount end)
FROM
(SELECT
SUM(price) as price, group_id, max_amount
FROM articles
GROUP BY group_id, max_amount
)

明らかに、私のデータ モデルはより複雑ですが、これが私の主な問題です。

あるサブクエリを別のサブクエリにネストすることは許可されていないと思うので、HQL でこれをどのように書き直すことができるのだろうか。

みんなありがとう。

4

1 に答える 1

0

このようにするのは気が進まなかったのですが、いろいろ調べた結果、SQLクエリをそのまま使うしか考えられませんでした。

何かのようなもの :

String sQuery = "SELECT SUM(case when max_amount is null then price ...
final org.hibernate.SQLQuery query = session.createSQLQuery(sQuery);
List results = query.list();

HQL でネストされたクエリを処理する Hibernate については考えられません。

于 2013-10-10T11:08:07.947 に答える