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!