1.Query查询时,使用q.setParameter的方式设置参数:
Session s=HibernateSessionFactory.getSession(); String hql="from Computer c where c.id=:id"; Query q=s.createQuery(hql); q.setParameter("id",1); List l=q.list(); for(int i=0;i<l.size();i++) { Computer c=(Computer)l.get(i); System.out.println(c.getName()); }
如果设置的参数id是Long型的,执行时就会报如下错误:
java.lang.ClassCastException: java.lang.Integer
这是因为setParameter会根据参数的类型和实际传递的参数类型去判断,如果类型不一致就会报错。