Java 休眠-意外标记:较低
我必须使用不区分大小写的获取数据库(PostgreSQL)中的所有寄存器。我尝试过使用criteria,但是ignoreCase()对我不起作用(我使用的是Hibernate 3.6) 我也尝试过使用ilike方法,但仍然不起作用Java 休眠-意外标记:较低,java,sql,postgresql,hibernate,hibernate-criteria,Java,Sql,Postgresql,Hibernate,Hibernate Criteria,我必须使用不区分大小写的获取数据库(PostgreSQL)中的所有寄存器。我尝试过使用criteria,但是ignoreCase()对我不起作用(我使用的是Hibernate 3.6) 我也尝试过使用ilike方法,但仍然不起作用 criteria.add(Restrictions.ilike(TABLECODEID, tableCodeID)); 这个版本也是: criteria.add(Restrictions.ilike(TABLECODEID, tableCodeID, MatchMo
criteria.add(Restrictions.ilike(TABLECODEID, tableCodeID));
这个版本也是:
criteria.add(Restrictions.ilike(TABLECODEID, tableCodeID, MatchMode.ANYWHERE));
现在,当我尝试在Hibernate中使用HQL创建查询时,我遇到了这个错误:
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();
StringBuffer queryString=new StringBuffer()
.append(“来自列表项li”)
.append(“其中较低(li.tableCodeId)类似于:tableCodeId”);
Query=session.createQuery(queryString.toString());
setParameter(“tableCodeId”,tableCodeId.toLowerCase());
List listItemListAux=query.List();
我做错了什么?你应该用这种方法来解决
匹配模式。任何地方都可以解决这个问题:
criteria.add(Restrictions.ilike(TABLECODEID, tableCodeID, MatchMode.ANYWHERE));
最后我使用了HQL,问题是我在lower(li.tableCodeId)函数中攻击实体,我不得不使用DB列名lower(tableCodeId)我现在已经尝试过了,并且保持不变。。。谢谢你抽出时间。
criteria.add(Restrictions.ilike(TABLECODEID, tableCodeID, MatchMode.ANYWHERE));