我必须在数据库(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(