Java 我已经解决了hibernate中LikeExpression的问题(hibernate 3.5.5)

Java 我已经解决了hibernate中LikeExpression的问题(hibernate 3.5.5),java,hibernate,detachedcriteria,Java,Hibernate,Detachedcriteria,看起来它对ignorCase不起作用。 第一个断言返回true。第二,错。有什么想法吗 EntityManager entityManager = (EntityManager) applicationContext.getBean("entityManager"); HibernateTemplate hibernateTemplate = entityManager.getHibernateTemplate(); int size = hibernateTemplate.find("from

看起来它对ignorCase不起作用。 第一个断言返回true。第二,错。有什么想法吗

EntityManager entityManager = (EntityManager) applicationContext.getBean("entityManager");
HibernateTemplate hibernateTemplate = entityManager.getHibernateTemplate();
int size = hibernateTemplate.find("from Source where caption like '%Вход%'").size();
System.out.println("By Query: " + size);
assertTrue(size > 0);

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Source.class);
detachedCriteria.add(Restrictions.like("caption", "Вход", MatchMode.ANYWHERE).ignoreCase());
List list = hibernateTemplate.findByCriteria(detachedCriteria);
System.out.println("By DC: " + list.size());
assertTrue(list.size() > 0);
尝试
ilike(“标题”、“bБаа”、匹配模式.ANYWHERE)
而不是
像(..).ignoreCase()


尝试
限制。我喜欢
而不是
限制。像
在大多数数据库(Postgres除外)上,Hibernate执行不区分大小写的
一样执行
低(标题)像?
,其中
的结果“%bjb=”“%”。toLowerCase()
。如您所见,在您的示例中,只有当数据库
lower()
的结果与
String.toLowerCase()的结果不一致时,才会生成
false
。例如,如果数据库区域设置配置不支持西里尔文字符的大小写转换,就可能发生这种情况