[英]Hibernate - unexpected token: lower
我必須使用case-insesitive獲取數據庫(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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.