Я нашел способ реализовать это. В основном есть 2 шага:
- нормализуйте параметр (в вашем случае 1) и
- нормализовать данные из БД
Пример
public User getByName(String paramName) {
.....
}
Оригинальный HQL-запрос:
String queryString = "select u from User u where u.name : =paramName";
Новый запрос:
paramName = normalizer(paramName );
String queryString = "select u from User u where " + replacer(u.name) +" : =paramName";
И 2 метода:
public static String normalizer(String s) {
return Normalizer.normalize(s, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "");
}
public String replacer(String param) {
String t1 = "àâäçéèëêùûüôöïî";
String t2 = "aaaceeeeuuuooii";
String s = param;
for (int i = 0; i < t1.length(); i++) {
s = "replace(" + s + ",'" + t1.charAt(i) + "','" + t2.charAt(i) + "')";
}
return s;
}