Nevím, co je JPA (můžu si to vygooglovat; chci říct, že to neznám); ale:pokud existuje nějaká naděje na zpracování SQL dotazu a jediným problémem je překlad podmínky na n-ticích, přepište dotaz takto:
select city
from user
where firstname = 'a' and lastname = 'b'
or firstname = 'c' and lastname = 'd'
;
To je to, co dotazovací stroj udělá s vaším původním dotazem bez ohledu na to; můžete se podívat na EXPLAIN PLAN, abyste se o tom přesvědčili.
Někteří lidé rádi vkládají závorky kolem každého páru AND
-připojené podmínky; Ne, o nic víc, než bych použil závorky pro 2 * 3 + 4 * 6, ale pokud máte pocit, že zvyšují jasnost, rozhodně je můžete přidat.