java – HQL与Restrictions.ilike等效(用于不区分大小写的匹配)
发布时间:2020-12-14 16:27:04 所属栏目:Java 来源:网络整理
导读:我为Hibernate MySQL编写了一个项目.现在我把它移植到德比(原因很多). 现在我发现Derby在查询中使用LIKE时区分大小写.这可以使用 Restrictions.ilike(...) 在Criteria查询中解决…但是我有许多复杂的HQL查询使用它.有没有办法在HQL中有类似的功能? 解决方法
我为Hibernate
MySQL编写了一个项目.现在我把它移植到德比(原因很多).
现在我发现Derby在查询中使用LIKE时区分大小写.这可以使用 解决方法
HQL中没有类似的功能.正如康斯坦丁在
suggestion中已经指出的那样,你最好的选择是
tune the database connection,并将
collation设置为TERRITORY_BASED:SECONDARY,正如JIRA:
DERBY-1748: Global case insensitive setting所述.
考虑到所有的平等(=)和喜欢将是不区分大小写.这可能有点太远了,不适合你的特殊情况. 解决这个问题的另一种方法将是创建基于函数的索引(如果Derby支持它们,那么当然)并且调整你的HQL以便像这样结合起来. Query q = session.createQuery("... WHERE lower(entity.field) like ?)"); q.setString(0,'%' + variable.toLowerCase() + '%'); 如果Derby不支持FBI(我认为没有),您还可以创建具有较低值的触发器填充列并对其进行索引. 更新似乎可以定义派生/自动生成的列,如其他JIRA:JIRA-481: implement SQL generated columns中所述. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |