休眠-意外的令牌:更低



我必须在数据库(PostgreSQL(中获取所有寄存器,并且大小写不正。我尝试了一些标准,但ignoreCase((对我不起作用(我使用的是Hibernate 3.6(。

criteria.add(Restrictions.eq(TABLECODEID, tableCodeID).ignoreCase());

我也尝试过使用ilike方法,但仍然不起作用。

criteria.add(Restrictions.ilike(TABLECODEID, tableCodeID));

这个版本也是:

criteria.add(Restrictions.ilike(TABLECODEID, tableCodeID, MatchMode.ANYWHERE));

所以现在,当我尝试用HQL:在Hibernate中创建查询时,我遇到了这个错误

unexpected token: lower near line 1, column 81

我的代码如下:

StringBuffer queryString = new StringBuffer()
.append("from ListItem li ")
.append("where lower(li.tableCodeId) like :tableCodeId");
Query query = session.createQuery(queryString.toString());
query.setParameter("tableCodeId", tableCodeID.toLowerCase());
List<ListItem> listItemListAux = query.list();

我做错了什么?

您应该以这种方式解决,MatchMode.ANYWHERE将完成任务:

criteria.add(Restrictions.ilike(TABLECODEID, tableCodeID, MatchMode.ANYWHERE));

最后我使用HQL,问题是我在lower(li.tableCodeId(函数中攻击实体,我不得不使用DB列名lower(tableCodeId(

最新更新