假设我有一个表:Person(名称:univarchar),此表包含一行" abc"。 我使用Hibernate(Criteria API和HQL)搜索Person:
标准API:
Criteria c = session.createCriteria(Person.class);
c.add(Restrictions.ilike(name,"abc"));
return c.list();
HQL:
String query = "from Person where lower(name) like :name";
Query q = session.createQuery(query);
query.setString("name","abc");
return query.list();
返回空结果。但是,当我使用Sybase的Interactive SQL执行由Hibernate生成的SQL语句时,它会返回一行" abc"。
我找到了HQL案例的解决方案。这是使用rtrim函数:
String query = "from Person where lower(rtrim(name)) like :name";
...
但我的问题是我想使用Criteria API,我找不到任何方法来使用Criteria API修剪名称列。
谢谢,抱歉我的英语不好。
答案 0 :(得分:0)
您是否尝试过此代码:
Criteria c = session.createCriteria(Person.class);
c.add(Restrictions.ilike(name,"abc",MatchMode.ANYWHERE));
return c.list();
如果这不起作用,那么Read this。它的相似之处只是他希望在Order
时想要修剪Restrictions
。{/ p>