`
鼠标中毒
  • 浏览: 1349 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate中HQL占位符的一点使用技巧

阅读更多
大家都知道在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>?]
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics