Tôi không biết JPA là gì (tôi có thể Google nó; ý tôi là tôi không quen thuộc với nó); nhưng:nếu có bất kỳ hy vọng nào để xử lý một truy vấn SQL và vấn đề duy nhất là dịch một điều kiện trên các bộ giá trị, thì hãy viết lại truy vấn như sau:
select city
from user
where firstname = 'a' and lastname = 'b'
or firstname = 'c' and lastname = 'd'
;
Đây là những gì công cụ truy vấn sẽ làm với truy vấn ban đầu của bạn bất kể; bạn có thể xem KẾ HOẠCH GIẢI THÍCH để thuyết phục bản thân về điều này.
Một số người thích đặt dấu ngoặc đơn xung quanh mỗi cặp AND
-điều kiện kết nối; Tôi không, nhiều hơn là tôi sẽ sử dụng dấu ngoặc đơn cho 2 * 3 + 4 * 6, nhưng nếu bạn cảm thấy chúng thêm rõ ràng, bằng mọi cách bạn có thể thêm chúng.