Не знам какво е JPA (мога да го направя в Google; имам предвид, че не съм запознат с него); но:ако има някаква надежда да се обработи SQL заявка и единственият проблем е преводът на условие за кортежи, тогава пренапишете заявката така:
select city
from user
where firstname = 'a' and lastname = 'b'
or firstname = 'c' and lastname = 'd'
;
Това е, което машината за заявки ще направи с оригиналната ви заявка независимо; можете да погледнете ОБЯСНИТЕЛЕН ПЛАН, за да се убедите в това.
Някои хора обичат да поставят скоби около всяка двойка AND
-свързани условия; Не го правя, както не бих използвал скоби за 2 * 3 + 4 * 6, но ако смятате, че добавят яснота, непременно можете да ги добавите.