Je ne sais pas ce qu'est JPA (je peux le rechercher sur Google ; ce que je veux dire, c'est que je ne le connais pas) ; mais :s'il y a un espoir de gérer une requête SQL, et que le seul problème est de traduire une condition sur des tuples, alors réécrivez la requête comme suit :
select city
from user
where firstname = 'a' and lastname = 'b'
or firstname = 'c' and lastname = 'd'
;
C'est ce que le moteur de requête fera avec votre requête d'origine, quoi qu'il en soit ; vous pouvez regarder un EXPLAIN PLAN pour vous en convaincre.
Certaines personnes aiment mettre des parenthèses autour de chaque paire de AND
-conditions connexes ; Je n'utilise pas plus de parenthèses que j'utiliserais pour 2 * 3 + 4 * 6, mais si vous pensez qu'elles ajoutent de la clarté, vous pouvez par tous les moyens les ajouter.