Kacang Java saya memiliki properti childCount. Properti ini tidak dipetakan ke kolom database . Sebaliknya, itu harus dihitung oleh database dengan COUNT()
fungsi yang beroperasi pada gabungan kacang Java saya dan anak-anaknya. Akan lebih baik lagi jika properti ini dapat dihitung sesuai permintaan / "malas", tetapi ini tidak wajib.
Dalam skenario kasus terburuk, saya dapat mengatur properti kacang ini dengan HQL atau API Kriteria, tetapi saya memilih untuk tidak melakukannya.
@Formula
Anotasi Hibernate dapat membantu, tetapi saya hampir tidak dapat menemukan dokumentasi apa pun.
Setiap bantuan sangat dihargai. Terima kasih.
@Formula
Anotasi menggunakan SQL, bukan HQL.Seperti yang dijelaskan dalam artikel ini , Anda memiliki tiga opsi:
@Transient
metode@PostLoad
pendengar entitas@Formula
penjelasan khusus HibernateMeskipun Hibernate memungkinkan Anda menggunakan @Formula , dengan JPA, Anda dapat menggunakan callback @PostLoad untuk mengisi properti transien dengan hasil dari beberapa kalkulasi:
Untuk pertanyaan yang lebih kompleks, Anda dapat menggunakan Hibernate
@Formula
, seperti yang dijelaskan di artikel ini :sumber
Lihat Blaze-Persistence Entity Views yang bekerja di atas JPA dan menyediakan dukungan DTO kelas satu. Anda dapat memproyeksikan apa saja ke atribut dalam Tampilan Entitas dan bahkan akan menggunakan kembali node gabungan yang ada untuk pengaitan jika memungkinkan.
Berikut adalah contoh pemetaan
Mengambil ini akan menghasilkan kueri JPQL / HQL yang mirip dengan ini
Berikut adalah posting blog tentang penyedia subquery khusus yang mungkin menarik bagi Anda juga: https://blazebit.com/blog/2017/entity-view-mapping-subqueries.html
sumber
saya telah mencoba ini pada kode saya
kesalahan yang saya dapatkan ketika saya menjalankan dan menampilkan tampilan saya bahkan sebelum mencoba menampilkan kolom pada kumis adalah sesuatu seperti ini
pertanyaan yang saya ajukan adalah apakah ada cara untuk mendapatkan nilai kolom Terhitung menggunakan JPA / Hibernate dengan mySQL?
apa yang saya lakukan salah?
sumber