休眠 - 意外标记:较低
Hibernate - unexpected token: lower
我必须使用 不区分大小写 获取我的数据库 (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) 函数中攻击实体,我不得不使用数据库列名较低(表代码)
我必须使用 不区分大小写 获取我的数据库 (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) 函数中攻击实体,我不得不使用数据库列名较低(表代码)