代码之家  ›  专栏  ›  技术社区  ›  Caznik

休眠-意外的令牌:低

  •  0
  • Caznik  · 技术社区  · 6 年前

    我必须用 个案分析 。我试过标准,但是 忽略Enter() 不适合我(我使用的是Hibernate 3.6)。

    criteria.add(Restrictions.eq(TABLECODEID, tableCodeID).ignoreCase());
    

    我也试过用 伊利克 方法,但仍然不起作用。

    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();
    

    我做错什么了?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Leviand    6 年前

    你应该这样解决 MatchMode.ANYWHERE 会成功的:

    criteria.add(Restrictions.ilike(TABLECODEID, tableCodeID, MatchMode.ANYWHERE));
    
        2
  •  0
  •   Caznik    6 年前

    最后我使用了hql,问题是我攻击的是 下(li.tablecodeid) 函数,我必须使用db列名 下(tablecodeid)