簡體   English   中英

休眠-意外令牌:降低

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM