У меня есть DetachedCriteria
, который я использую для поиска таблицы на основе поля имени. Я хочу сделать запрос нечувствительным к регистру, и мне интересно, есть ли способ сделать это без использования HQL. Что-то вроде:Использование Hibernate DetachedCriteria для вызова агрегатных функций
private void searchByFullName(DetachedCriteria criteria, String searchCriteria) {
criteria.add(Restrictions.like("fullName", "%" + searchCriteria.toLowerCase() + "%"));
criteria.addOrder(Order.asc("fullName"));
}
Но я хочу, чтобы убедиться, что он будет игнорировать тот случай, когда он делает поиск (он должен искать как в верхнем и нижнем регистре), поэтому SQL он генерирует должен выглядеть примерно так :
SELECT * FROM Student WHERE ? LIKE toLower(FULL_NAME);
Если у вас есть много строк в этой таблице, движок должен будет выполнять сканирование таблицы с помощью 'toLower (FULL_NAME)', чего вы, возможно, и не захотите. Один из вариантов - сохранить его как все в нижнем регистре или добавить другой столбец, который используется только для поиска, в котором вы храните его все в нижнем регистре. – Augusto