Per rimanere "indipendente" come dici per il database e il provider JPA, eviterei getSingleResult() e prenderei list() e corrispondere in memoria per il nome. Probabilmente ne otterrai più di uno ma non 100 o più.
Un altro modo potrebbe essere quello di salvare il nome normalizzato (rifilato, in minuscolo) in un nuovo campo.