Java 我已经解决了hibernate中LikeExpression的问题(hibernate 3.5.5)
看起来它对ignorCase不起作用。 第一个断言返回true。第二,错。有什么想法吗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
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
。例如,如果数据库区域设置配置不支持西里尔文字符的大小写转换,就可能发生这种情况