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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-10-26 07:00:30622ブラウズ

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 サイトの他の関連記事を参照してください。

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