Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Lajur Tertentu Menggunakan Pertanyaan Kriteria Hibernate?

Bagaimana untuk Mendapatkan Lajur Tertentu Menggunakan Pertanyaan Kriteria Hibernate?

Barbara Streisand
Barbara Streisandasal
2024-10-26 07:00:30707semak imbas

How to Retrieve Specific Columns Using Hibernate Criteria Query?

Pertanyaan Kriteria Hibernate untuk Mendapatkan Lajur Tertentu

Dalam Hibernate, API Pertanyaan Kriteria menyediakan cara yang fleksibel untuk membina pertanyaan seperti SQL. Secara lalai, pertanyaan yang dijana mendapatkan semula semua lajur, yang boleh membawa kepada isu prestasi apabila lajur tertentu dikecualikan.

Mengecualikan Lajur Tunggal

Untuk mengecualikan lajur tertentu daripada Pertanyaan Kriteria, gunakan unjuran . Unjuran membolehkan anda menentukan lajur yang harus disertakan dalam hasil.

<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>

Pertanyaan ini hanya akan mendapatkan semula lajur id, nama dan penerangan, mengetepikan lajur lain daripada hasil carian.

Mengendalikan Ralat Alias

Apabila menggunakan unjuran, alias hasil mesti sepadan dengan sifat yang dinyatakan dalam senarai unjuran. Jika tidak, anda mungkin menghadapi ralat seperti "Lajur 'alias' tidak diketahui dalam 'fasal di mana'".

<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>

Dalam pertanyaan ini, alias ("y0", "y1", "y2") sepadan dengan susunan sifat dalam senarai unjuran.

Setara HQL

Setara HQL bagi Pertanyaan Kriteria dengan unjuran ialah:

<code class="hql">SELECT e.id, e.name, e.description
FROM Entity e</code>

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Lajur Tertentu Menggunakan Pertanyaan Kriteria Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn