Alternatif untuk Hibernate Union Queries
Walaupun tiada sokongan pertanyaan kesatuan asli dalam Hibernate, terdapat beberapa kaedah untuk mencapai yang serupa hasil.
Subpilihan:
Satu pendekatan ialah menggunakan subpilihan dalam satu pertanyaan. Ini melibatkan penentuan berbilang id dalam keadaan (subkueri) yang disambungkan oleh atau pengendali. Walau bagaimanapun, perlu diingat bahawa kaedah ini boleh membawa kepada pengehadan prestasi dalam MySQL.
Contoh:
Query query1 = entityManager.createQuery( "from Person p where p.name = 'Joe'", Person.class); Query query2 = entityManager.createQuery( "from Person p join p.children c where c.name = 'Joe'", Person.class); Set<Person> people = new HashSet<>(); people.addAll((List<Person>) query1.list()); people.addAll((List<Person>) query2.list()); List<Person> result = new ArrayList<>(people);
Lihat Jadual:
Pilihan lain adalah untuk mencipta jadual paparan yang mengandungi set hasil yang dikehendaki. Pendekatan ini memerlukan beberapa kerja pentadbiran pangkalan data, tetapi boleh memberikan faedah prestasi.
JDBC Biasa:
Walaupun JDBC biasa membenarkan pertanyaan kesatuan terus, ia mengorbankan kemudahan Hibernate anotasi pertanyaan dan pengesahan.
Lain-lain Cadangan:
Prestasi Pertimbangan:
Apabila menggunakan subpilihan, kesan prestasi pertanyaan MySQL yang terhasil harus diambil kira. Tanpa pengindeksan yang sesuai, pertanyaan mungkin bergelut dengan set data yang besar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Setara dengan Pertanyaan UNION dalam Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!