Bagaimana untuk Mendapatkan Lajur Tertentu Menggunakan Pertanyaan Kriteria Hibernate?

Barbara Streisand
Lepaskan: 2024-10-26 07:00:30
asal
621 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!