hibernate3用:?1,?2......
hibernate4用::p1, :p2.....
大家都知道在HQL中可以使用?或者:***的方式在外部配置查询参数,如:
Query query=session.createQuery("from TestStu s where s.team=:team and s.age>:age"); 或者
Query query=session.createQuery("from TestStu s where s.team=? and s.age>?);
这句话的意思是从一个持久的team对象中,取出其持有的TestStu集合,并筛选出age大于执行数据的记录
我们可以这样设置参数
query.setParameter("team",team,Hibernate.entity(TestTeam.class));
//或者使用query.setEntity("team",team);
query.setParameter("age", 15);
但我们决不能在HQL中又出现?,又出现变量占位符,即
Query query=session.createQuery("from TestStu s where s.team=? and s.age>:age);
这样,在设置参数时候,会出现异常如下:
cannot define positional parameter after any named parameters have been defined [from Search.filter.TestStu s where s.team=:team and s.age>?]