got*_*ch4 14 java sql hibernate hql derby
我为Hibernate + MySQL编写了一个项目.现在我将它移植到德比(出于多种原因).
现在我发现在查询中使用LIKE时,Derby区分大小写.这可以使用Restrictions.ilike(...)Criteria查询来解决...但我有许多使用它的复杂 HQL查询.有没有办法ilike在HQL中使用类似的功能?
Xav*_*ica 18
ilikeHQL中没有等效的功能.正如康斯坦丁已经在他指出的建议,你最好的选择是调整数据库连接并设置整理到TERRITORY_BASED:SECONDARY,在此JIRA解释说:DERBY-1748:全球不区分大小写的设置.
考虑到所有等式(=)和likes将不区分大小写.这可能有点太过分了,并不适合您的特定情况.
解决这个问题的另一种方法是创建基于函数的索引(当然,如果Derby支持它们),并调整你的HQL来组合like和lower喜欢这样.
Query q = session.createQuery("... WHERE lower(entity.field) like ?)");
q.setString(0, '%' + variable.toLowerCase() + '%');
Run Code Online (Sandbox Code Playgroud)
如果Derby不支持FBI(我认为它不支持),您还可以创建具有较低值的触发器填充列并将其编入索引.
更新似乎可以定义派生/自动生成的列,如本其他JIRA中所述:JIRA-481:实现SQL生成的列.