Apakah ada cara untuk membuat kueri Berbeda di HQL. Baik dengan menggunakan kata kunci "berbeda" atau metode lain. Saya tidak yakin apakah perbedaan adalah keywork yang valid untuk HQL, tetapi saya mencari HQL yang setara dengan kata kunci SQL "berbeda".
100
Perlu dicatat bahwa
distinct
kata kunci di HQL tidak langsung dipetakan kedistinct
kata kunci di SQL.Jika Anda menggunakan
distinct
kata kunci di HQL, terkadang Hibernate akan menggunakandistinct
kata kunci SQL, tetapi dalam beberapa situasi akan menggunakan transformator hasil untuk menghasilkan hasil yang berbeda. Misalnya saat Anda menggunakan gabungan luar seperti ini:Dalam kasus ini, tidak mungkin untuk menyaring duplikat di tingkat SQL, jadi Hibernate menggunakan
ResultTransformer
untuk menyaring duplikat setelah kueri SQL dilakukan.sumber
lakukan sesuatu seperti ini lain kali
sumber
Anda juga dapat menggunakan
Criteria.DISTINCT_ROOT_ENTITY
dengan kueri Hibernate HQL.Contoh:
sumber
Saya memiliki beberapa masalah dengan transformator hasil yang digabungkan dengan kueri HQL. Ketika saya mencoba
itu tidak berhasil. Saya harus mengubah secara manual seperti ini:
Dengan API Kriteria, transformator bekerja dengan baik.
sumber
Permintaan utama saya terlihat seperti ini dalam model:
Dan saya masih belum mendapatkan apa yang saya anggap sebagai hasil yang "berbeda". Mereka hanya dibedakan berdasarkan kombinasi tombol utama di atas tabel.
Jadi,
DaoImpl
saya menambahkan perubahan satu baris dan akhirnya mendapatkan pengembalian "berbeda" yang saya inginkan. Contohnya adalah daripada melihat 00 empat kali, sekarang saya hanya melihatnya sekali. Ini kode yang saya tambahkan keDaoImpl
:Saya harap ini membantu! Sekali lagi, ini mungkin hanya berfungsi jika Anda mengikuti praktik pengkodean yang mengimplementasikan layanan, dao, dan jenis model proyek.
sumber
Misalkan Anda memiliki Entitas Pelanggan yang dipetakan ke tabel CUSTOMER_INFORMATION dan Anda ingin mendapatkan daftar nama depan pelanggan yang berbeda. Anda dapat menggunakan potongan di bawah ini untuk mendapatkan yang sama.
Saya harap ini membantu. Jadi di sini kami menggunakan grup dengan alih-alih menggunakan kata kunci yang berbeda.
Juga sebelumnya saya merasa sulit untuk menggunakan kata kunci yang berbeda ketika saya ingin menerapkannya ke beberapa kolom. Misalnya saya ingin mendapatkan daftar firstName yang berbeda, lastName maka kelompok dengan hanya akan bekerja. Saya mengalami kesulitan dalam menggunakan perbedaan dalam kasus ini.
sumber
Saya mendapat jawaban untuk Hibernate Query Language untuk menggunakan bidang Berbeda. Anda dapat menggunakan * PILIH DISTINCT (TO_CITY) FROM FLIGHT_ROUTE *. Jika Anda menggunakan kueri SQL , itu mengembalikan Daftar String. Anda tidak dapat menggunakannya untuk mengembalikan nilai dengan Kelas Entitas. Jadi Jawaban untuk mengatasi jenis Masalah tersebut adalah menggunakan HQL dengan SQL .
Dari pernyataan query SQL didapat DISTINCT ROUTE_ID dan input sebagai List. Dan kueri IN memfilter TO_CITY yang berbeda dari IN (Daftar).
Jenis pengembalian adalah jenis Entity Bean. Jadi Anda bisa melakukannya di AJAX seperti AutoComplement .
Semoga semuanya baik-baik saja
sumber
Anda dapat membuat kata kunci yang berbeda dalam pembuat kriteria Anda seperti ini.
Dan buat konstruktor bidang di kelas model Anda.
sumber
Jika Anda perlu menggunakan kata kunci baru untuk DTO kustom dalam pernyataan pemilihan Anda dan membutuhkan elemen yang berbeda , gunakan new outside of new seperti berikut-
sumber
Anda cukup menambahkan GROUP BY alih-alih Distinct
sumber