Abych zůstal "nezávislý", jak říkáte pro poskytovatele databáze a JPA, vyhnul bych se getSingleResult() a načetl list() a porovnal jej v paměti pro jméno. Pravděpodobně dostanete více než jeden, ale ne 100 nebo více.
Dalším způsobem může být uložit název normalizovaný (oříznutý, na malá písmena) do nového pole.