日期:2014-05-17  浏览次数:20749 次

Hibernate 传参失败
如题:请高手指教,为什么我不能使用Hibernate的各种传参方式呢? :参数名 这种也不行.每次执行到Query query=session.createQuery(hql);这一句就出错java.lang.reflect.InvocationTargetException

public List<Keyword> getKeywordList(int currPage,int pageSize,String id,String content){
if(id==null)
{
id="";
}
if(content==null)
{
content="";
}

String hql="from Keyword where id like ? and content like ?";

System.out.println(hql);

Session session=hibernateTemplate.getSessionFactory().openSession();

Query query=session.createQuery(hql);

query.setParameter(0, id);
query.setParameter(0, content);

query.setFirstResult((currPage - 1) * pageSize).setMaxResults(pageSize);

System.out.println(query.list().size());

return query.list();
}

------解决方案--------------------
String hql="from Keyword where id like ? and content like ?";
你这里用like是模糊查询,下面的query.setParameter(0, id)应该要这样写query.setParameter(0, "%"+id+"%"),可以有其他的方式


query.setParameter(0, id);
query.setParameter(0, content); //改成query.setParameter(1, "%"+content+"%")