Вам придется написать новое выражение (CaseInsensitiveInExpression
) самостоятельно. Используйте код org.hibernate.criterion.InExpression
в качестве отправной точки и преобразуйте его так, чтобы сгенерированное предложение SQL было похоже на
lower(theColumnName) in (?, ?, ?)
и значения, переданные в запрос, являются исходными значениями, переданными через toLowerCase()
(как это делает org.hibernate.criterion.ILikeExpression
)
Если вы хотите сделать базу данных независимой, используйте dialect.getLowercaseFunction()
, чтобы получить функцию базы данных, которая преобразует строку в нижний регистр, как это делает ILikeExpression
.