hibernate 4.1之后对于HQL中查询参数的占位符做了改进,如果仍然用老式的占位符会有类似如下的告警信息:
[main] WARN [org.hibernate.hql.internal.ast.HqlSqlWalker] – [DEPRECATION] Encountered positional parameter near line 1, column 95. Positional parameter are considered deprecated; use named parameters or JPA-style positional parameters instead.
从告警提示信息中可以看出,它建议用命名参数或者JPA占位符两中种方法来代替老的占位符查询方法。
比如老的占位符查询代码片段:
1 |
String
hql = "select
t from Blog t where t.site=? "; |
2 |
Query
query = getSession().createQuery(hql); |
3 |
query.setParameter(0, "micmiu.com"); |
方法一:改成命名参数的方式:
1 |
//命名参数的方式 |
2 |
String
hql2 = "select
t from Blog t where t.site=:site "; |
3 |
Query
query2 = getSession().createQuery(hql2); |
4 |
query2.setParameter("site", "micmiu.com"); |
方法二:改成JPA占位符的方式:
1 |
//JPA占位符方式 |
2 |
String
hql3 = "select
t from Blog t where t.site=?0 "; |
3 |
Query
query3 = getSession().createQuery(hql3); |
4 |
query2.setParameter("0", "micmiu.com"); |
后面两种查询方法就不会有告警信息产生了。
转自:http://blog.youkuaiyun.com/steveguoshao/article/details/24414051
本文讨论了在Hibernate 4.1之后对于HQL中查询参数占位符的改进,包括从使用老式占位符到推荐采用命名参数或JPA风格的占位符方法,以避免警告信息的产生。

被折叠的 条评论
为什么被折叠?



