【发布时间】:2011-04-28 09:31:12
【问题描述】:
我有一个DetachedCriteria,用于根据名称字段搜索表。我想让搜索不区分大小写,并且想知道是否有办法在不使用 HQL 的情况下做到这一点。比如:
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),您可能不希望这样做。一种替代方法是将其存储为全部小写,或者添加另一列仅用于搜索,您将其全部存储为小写。