Rumah  >  Artikel  >  Java  >  Bolehkah Spring Data JPA Mengendalikan Pertanyaan Kompleks dengan Operator Gabungan \"Dan\" dan \"Atau\"?

Bolehkah Spring Data JPA Mengendalikan Pertanyaan Kompleks dengan Operator Gabungan \"Dan\" dan \"Atau\"?

DDD
DDDasal
2024-10-27 08:32:30369semak imbas

 Can Spring Data JPA Handle Complex Queries with Combined

Mencipta Pertanyaan Kompleks dengan Operator Logik Gabungan dalam Spring Data JPA

Meningkatkan keupayaan pembinaan pertanyaan intuitif Spring Data JPA, soalan ini bergelut dengan menggabungkan kedua-dua pengendali "Dan" dan "Atau" melalui nama kaedah. Untuk mencapai matlamat ini, kaedah pertanyaan direka bentuk seperti berikut:

findByPlan_PlanTypeInAndSetupStepIsNullOrStepupStepIs(...)

Walau bagaimanapun, pertanyaan yang terhasil mentafsir ungkapan sebagai [(exp1 dan exp2) atau (exp3)], bercanggah dengan yang dimaksudkan ](exp1) dan (exp2 atau exp3)].

Bolehkah Spring Data JPA menampung pertanyaan kompleks tersebut?

Penyelesaian: Leverage Logical Equivalency

Sambil berhemat untuk elakkan nama kaedah yang terlalu panjang dan tidak dapat difahami, hasil yang diingini boleh dicapai dengan memanfaatkan kesetaraan logik berikut:

A /\ (B \/ C) <=> (A /\ B) \/ (A /\ C)
A and (B or C) <=> (A and B) or (A and C)

Menggunakan ini pada contoh:

findByPlan_PlanTypeInAndSetupStepIsNullOrPlan_PlanTypeInAndStepupStepIs(...)

Dengan memisahkan ungkapan menjadi Plan_PlanTypeInAndSetupStepIsNull dan Plan_PlanTypeInAndStepupStepIs, kita boleh membina pertanyaan yang betul:

(exp1) and (exp2 or exp3)

Atas ialah kandungan terperinci Bolehkah Spring Data JPA Mengendalikan Pertanyaan Kompleks dengan Operator Gabungan \"Dan\" dan \"Atau\"?. 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