Untuk tetap "independen" seperti yang Anda katakan untuk database dan penyedia JPA, saya akan menghindari getSingleResult() dan mengambil list() dan mencocokkan dalam memori untuk namanya. Mungkin Anda akan mendapatkan lebih dari satu tetapi tidak 100 atau lebih.
Cara lain adalah dengan menyimpan nama yang dinormalisasi (dipangkas, menjadi huruf kecil) di bidang baru.