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方法试试