Jag vet inte vad JPA är (jag kan Googla på det; vad jag menar är att jag inte är bekant med det); men:om det finns något hopp att hantera en SQL-fråga, och det enda problemet är att översätta ett villkor på tupler, skriv om frågan så här:
select city
from user
where firstname = 'a' and lastname = 'b'
or firstname = 'c' and lastname = 'd'
;
Detta är vad frågemotorn kommer att göra med din ursprungliga fråga oavsett; du kan titta på en FÖRKLARA PLAN för att övertyga dig själv om detta.
Vissa människor gillar att sätta parenteser runt varje par av AND
-anslutna förhållanden; Det gör jag inte, mer än jag skulle använda parenteser för 2 * 3 + 4 * 6, men om du känner att de ger klarhet kan du med alla medel lägga till dem.