Как сделать поиск без учета регистра в спящем режиме, используя критерии? - PullRequest
3 голосов
/ 26 декабря 2011

Я использую спящий режим.Я хочу сделать поиск без учета регистра.как показано ниже.

criteria.add(Restrictions.eq("id", id).ignoreCase());

но как сделать то же самое в нижнем регистре?

criteria.add(Restrictions.in("name", names)); // здесь namesis список имен.

здесь, как искать имена без учета регистра?

Пожалуйста, помогите.

Спасибо!

1 Ответ

4 голосов
/ 26 декабря 2011

Вам придется написать новое выражение (CaseInsensitiveInExpression) самостоятельно. Используйте код org.hibernate.criterion.InExpression в качестве отправной точки и преобразуйте его так, чтобы сгенерированное предложение SQL было похоже на

lower(theColumnName) in (?, ?, ?)

и значения, переданные в запрос, являются исходными значениями, переданными через toLowerCase() (как это делает org.hibernate.criterion.ILikeExpression)

Если вы хотите сделать базу данных независимой, используйте dialect.getLowercaseFunction(), чтобы получить функцию базы данных, которая преобразует строку в нижний регистр, как это делает ILikeExpression.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...