ホームページ > データベース > mysql チュートリアル > Hibernate Criteria クエリを使用して特定の列を取得するにはどうすればよいですか?

Hibernate Criteria クエリを使用して特定の列を取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-26 07:00:30
オリジナル
705 人が閲覧しました

How to Retrieve Specific Columns Using Hibernate Criteria Query?

特定の列を取得する Hibernate Criteria Query

Hibernate では、Criteria Query API により SQL のようなクエリを構築する柔軟な方法が提供されます。デフォルトでは、生成されたクエリはすべての列を取得するため、特定の列が除外されるとパフォーマンスの問題が発生する可能性があります。

単一列の除外

条件クエリから特定の列を除外するには、射影を使用します。 。プロジェクションを使用すると、結果に含める列を指定できます。

<code class="java">CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<Object[]> criteriaQuery = cb.createQuery(Object[].class);
Root<Entity> root = criteriaQuery.from(Entity.class);
criteriaQuery.multiselect(root.get("id"), root.get("name"), root.get("description"));
List<Object[]> result = session.createQuery(criteriaQuery).list();</code>
ログイン後にコピー

このクエリは、id、name、description 列のみを取得し、結果から他の列を省略します。

エイリアス エラーの処理

プロジェクションを使用する場合、結果のエイリアスはプロジェクション リストで指定されたプロパティと一致する必要があります。そうしないと、「'where 句' に不明な列 'エイリアス' があります」のようなエラーが発生する可能性があります。

<code class="java">CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<Object[]> criteriaQuery = cb.createQuery(Object[].class);
Root<Entity> root = criteriaQuery.from(Entity.class);
criteriaQuery.multiselect(root.get("id").as("y0"), root.get("name").as("y1"), root.get("description").as("y2"));
List<Object[]> result = session.createQuery(criteriaQuery).list();</code>
ログイン後にコピー

このクエリでは、エイリアス ("y0"、"y1"、"y2") が一致します。射影リスト内のプロパティの順序。

同等の HQL

射影を使用した基準クエリの HQL 同等物は次のとおりです。

<code class="hql">SELECT e.id, e.name, e.description
FROM Entity e</code>
ログイン後にコピー

以上がHibernate Criteria クエリを使用して特定の列を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート