Para permanecer "independiente" como usted dice para la base de datos y el proveedor de JPA, evitaría getSingleResult () y buscaría la lista () y coincidiría en la memoria con el nombre. Probablemente obtendrá más de uno, pero no 100 o más.
Otra forma podría ser guardar el nombre normalizado (recortado, a minúsculas) en un campo nuevo.