2011-12-06 4 views
1

私のHQLにRowNumOrderbyを使用しようとしています。基礎となるデータベースはOracleです。 期待通りにRownumは注文前に実行されます(これは私が望んでいません)。HQLでRownumとOrderByを使用

SQLでは、これはfrom節でSubselectを使用して実行できますが、パフォーマンスに影響を与えずにHQLでこれをどのように達成できますか。また、HQLはfrom句でサブクエリを許可しません。 が試した:

setFirstResult(resultsetLimit) 
setMaxResults(resultsetLimit) 
setFetchSize(resultsetLimit) 

とそのひどくパフォーマンスを減速します。

私は休止状態のエキスパートなので、何か不足している場合や何か墓をしている場合はご容赦ください。 また、この時点では私にはオプションがありませんが、HQLを使用しています。

答えて

1

HQLは副選択と副問い合わせをサポートします。コミュニティドキュメントhereに語ったよう

For databases that support subselects, Hibernate supports subqueries within queries. A subquery must be surrounded by parentheses (often by an SQL aggregate function call). Even correlated subqueries (subqueries that refer to an alias in the outer query) are allowed.

+1

"HQLサブクエリはselect句またはwhere句でのみ発生することができます。"また、select句のサブクエリは、単一の値を返す必要があります...私の場合、複数の値があります。答えはありがとうございます – airboss

+1

クエリが複雑になると、** SQL、関数またはストアドプロシージャ**に移動しようとする容易に維持されます。それが役に立つ場合は、回答を受け入れることができます。 – ManuPK

関連する問題