ホームページ >Java >&#&チュートリアル >JPQL または HQL で MySQL の LIMIT 句を置き換える方法は?

JPQL または HQL で MySQL の LIMIT 句を置き換える方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-15 04:16:09828ブラウズ

How to Replace MySQL's LIMIT Clause in JPQL or HQL?

JPQL または HQL の MySQL LIMIT 句の代替

Hibernate 3 では、HQL の MySQL LIMIT 句に相当するものは直接サポートされていません。 。以前のバージョンの Hibernate では可能でしたが、現在は機能ではありません。

歴史的注:

Hibernate 2 では、HQL パーサーは厳密に準拠を強制しませんでした。標準の HQL 構文に変換します。これにより、HQL クエリ内に LIMIT 句などの認識されないフラグメントを含めることができるようになりました。ただし、Hibernate 3 での AST HQL パーサーの導入により、このような非標準の構成要素は許容されなくなりました。

解決策:

クエリを制限するための推奨アプローチHibernate 3 以降の結果は、Query インターフェースの setMaxResults() メソッドを使用します。このメソッドを使用すると、クエリによって返される結果の最大数を指定できます。

MySQL LIMIT 句の動作をエミュレートするには、setMaxResults() を setFirstResult() メソッドと組み合わせて使用​​できます。たとえば、クエリから最初の 20 件の結果を返すには、次のコードを使用します。

Query query = session.createQuery("from ATable order by aTableColumn desc");
query.setMaxResults(20);
query.setFirstResult(0);

setMaxResults() は LIMIT 句ほど簡潔ではないかもしれませんが、一貫したサポートされているメカニズムを提供します。 JPQL および HQL でのクエリ結果を制限するため。

以上がJPQL または HQL で MySQL の LIMIT 句を置き換える方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。