bernate 4.1之后对于HQL中查询参数的占位符做了改进,如果仍然用老式的占位符会有类似如下的告警信息: org.hibernate.hql.internal.ast.HqlSqlWalker generatePositionalParameter WARN: [DEPRECATION] Encountered positional parameter near line 1, column 85. Positional parameter are considered deprecated; use named parameters or JPA-style positional parameters instead. 从告警提示信息中可以看出,它建议用命名参数或者JPA占位符两中种方法来代替老的占位符查询方法。 比如老的占位符查询代码片段 String hql = "SELECT b.price FROM Book b WHERE b.id = ?"; Query query = getSession().createQuery(hql).setParameter(0, bookId); 方法一:改成命名参数的方式: [java] //命名参数的方式 String hql = "SELECT b.price FROM Book b WHERE b.id = :bookId"; Query query = getSession().createQuery(hql).setParameter("bookId", bookId); 方法二:改成JPA占位符的方式: [java] //JPA占位符方式 String hql = "SELECT b.price FROM Book b WHERE b.id = ?0"; Query query = getSession().createQuery(hql).setParameter("0", bookId); 其中"?"后面的"0"代表索引位置,在HQL语句中可重复出现,并不一定要从0开始,可以是任何数字,只是参数要与其对应上。 采用后面两种查询方法修改后就不会有告警信息产生了。

更多相关文章

  1. 使用Java中的Scala:将函数作为参数传递
  2. 如何在命令中传递对象参数?
  3. 如何在Javascript中解析URL查询参数?(复制)
  4. Java-控制台传递参数

随机推荐

  1. android 4.0 编译模式 eng -- > user 时
  2. 如何理解、使用Android(安卓)LogCat以及
  3. Android的驱动程序(一)
  4. Android - Android 的消息机制
  5. Android Intent的几种用法全面总结
  6. 如何用Android(安卓)Studio打多包名APK
  7. Android(安卓)Frame动画demo
  8. Android使用Fragment打造万能页面切换框
  9. Android init.rc详解
  10. Android的快速开发框架,Afinal 0.2.1 发布