当前位置: 代码迷 >> J2EE >> HQL 模糊查询出错
  详细解决方案

HQL 模糊查询出错

热度:598   发布时间:2016-04-17 23:07:38.0
HQL 模糊查询报错

public List<CardScheme> getCardSchemeList(String any, Integer pageNum) {
String hql = "FROM CardScheme a LEFT OUTER JOIN FETCH a.cardType WHERE a.name like ? or a.cardType.name like ? ";
//Query query = getSession().createQuery(hql).setString(0,"'%" + any + "%'").setString(1, "'%" + any + "%'");//查不到结果
Query query = getSession().createQuery(hql).setParameter(0, any).setParameter(1, any);//等于精确查询
return this.getPageList(query, pageNum);
}



public List<CardScheme> getCardSchemeList(String any, Integer pageNum) {
String hql = "FROM CardScheme a LEFT OUTER JOIN FETCH a.cardType WHERE a.name like ‘%?%’ or a.cardType.name like  ‘%?%’ ";
Query query = getSession().createQuery(hql).setParameter(0, any).setParameter(1, any);//这种方法报错
return this.getPageList(query, pageNum);
}

错误内容:No positional parameters in query: FROM CardScheme a LEFT OUTER JOIN FETCH a.cardType WHERE a.name like '%?%' or a.cardType.name like '%?%'

请问该怎么解决???
------解决思路----------------------
查询值两边加%
------解决思路----------------------
你第二种方法, like ‘%?%’   这里面的单引号不对,是中文的了。要不你试试直接写hql语句,不要用setParameter方法试试
  相关解决方案