Para permanecer "independente", como você diz para o banco de dados e o provedor JPA, eu evitaria o getSingleResult() e buscaria o list() e corresponderia na memória para o nome. Provavelmente você terá mais de um, mas não 100 ou mais.
Outra maneira poderia ser salvar o nome normalizado (aparado, para letras minúsculas) em um novo campo.