Hql参数占位符使用(转+整理)

时间:2022-12-28 18:44:58

在Hibernate 4版本中,对于Hql有一点点改变,如果你还是按照以前的方式去编写HQL Query query = sessionFactory.openSession().createQuery("from User u where u.name = ?") .setParamter(,"line");就会得到一个警告。

得到的警告:
  [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: 命名参数的方式

Query query = sessionFactory.openSession().createQuery("from User u where u.name =:name");
query.setParamter("name","line");

2: JPA(java persistens api)的方式
参考资料:https://hibernate.atlassian.net/browse/HHH-8012?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

// 有问题的jpa方式
Query query = sessionFactory.openSession().createQuery("from User u where u.name =?0")
query.setParamter(,"line"); //?后面的数字是可以随意的,不必要从0开始

上面的方式会得到一个异常信息:

  threw exception [Request processing failed; nested exception is org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 2] with root cause
  org.hibernate.QueryParameterException:
Position beyond number of declared ordinal parameters. Remember that
ordinal parameters are 1-based! Position: 2 

这是由于Query是有hibernate封装好的session中获取的,所以我们不能按照jpa的方式来写:

// 调用的是setParmter(string,string)的方法,而不是setParmter(int,string)
Query query = sessionFactory.openSession().createQuery("from User u where u.name =?0")
query.setParamter("","line"); //?后面的数字是可以随意的,不必要从0开

3:more things

jpa和hibernate的关系

转+整理自:Hibernate4 HQL查询占位符的问题 https://my.oschina.net/line926/blog/202869

Hql参数占位符使用(转+整理)的更多相关文章

  1. Hibernate HQL基础 使用参数占位符

    在HQL中有两种方法实现使用参数占用符 1.使用? 使用?设置参数占位符,之后通过setString()和setInteger()等方法为其赋值.如: Query query = session.cr ...

  2. Hql中占位符(转)

    在新的Hibernate 4版本中,对于Hql有一点点改变,如果你还是按照以前的方式去编写HQL并且用了以下占位符的方式,就会得到一个警告. 参考资料:https://hibernate.atlass ...

  3. 。。。JDBC里面的sql与hibernate里面的hql有关占位符"?"的总结。。。

    今天在看Hibernate的时候,似乎又有了一些收获的东东,嘻嘻... 我记得很清楚:以前用JDBC操作数据库的时候是这样的: String sql = "select * from use ...

  4. Android string资源 包含 数学符号等特殊字符 及 参数占位符

    定义:<?xml version="1.0" encoding="utf-8"?><resources>    <string n ...

  5. java:Hibernate框架3(使用Myeclipse逆向工程生成实体和配置信息,hql语句各种查询(使用hibernate执行原生SQL语句,占位符和命名参数,封装Vo查询多个属性,聚合函数,链接查询,命名查询),Criteria)

    1.使用Myeclipse逆向工程生成实体和配置信息: 步骤1:配置MyEclipse Database Explorer: 步骤2:为项目添加hibernate的依赖: 此处打开后,点击next进入 ...

  6. hibernate查询语句hql中的占位符&quest;参数与命名参数:name设值方式搞混

    先贴出异常 Struts has detected an unhandled exception: Messages: Position beyond number of declared ordin ...

  7. 【SpringMVC】SpringMVC系列3之&commat;PathVariable映射URL占位符参数

    3.@PathVariable映射URL占位符参数 3.1.概述 带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义. ...

  8. slf4j中的Logger 使用占位符&lbrace;&rcub; 来传入参数记录日志信息

    首先要导入 slf4j包中的2个类 import org.slf4j.Logger;import org.slf4j.LoggerFactory; 再定义如下 private final static ...

  9. Hibernate4&period;1之后关于占位符的问题

    hibernate 4.1之后对于HQL中查询参数的占位符做了改进,如果仍然用老式的占位符会有类似如下的告警信息 [main] WARN [org.hibernate.hql.internal.ast ...

随机推荐

  1. ruby调试&sol;练习时的小技巧

    必备工具 irb 查祖先 1.9.3-p545 :023 > String.ancestors => [String, Comparable, Object, Kernel, BasicO ...

  2. hibernate&period;properties

    hibernate.dialect=org.hibernate.dialect.MySQL5Dialect #hibernate.dialect=org.hibernate.dialect.Oracl ...

  3. Navicat Premium 未保存的SQL如何找回 ?

    在使用 Navicat Premium 编辑SQL的过程中为防止程序意外崩溃,已经将编辑的SQL都已经备份. 备份存放目录地址:C:\Users\{登录用户名}\Documents\Navicat\M ...

  4. redis从入门到高可用 Redis复制的原理与优化

    需要的联系我,QQ:1844912514

  5. 升讯威微信营销系统开发实践:所见即所得的微官网( 完整开源于 Github)

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...

  6. 重写console&period;log的一些理解

    关于重写console.log的方式通常都是这样的: console.log = (function(oriLogFunc){ return function(str) { oriLogFunc.ca ...

  7. codeforces548B

    Mike and Fun CodeForces - 548B Mike and some bears are playing a game just for fun. Mike is the judg ...

  8. idataway&lowbar;前端代码规范

    1.前后端json对接的规范. 前后端的json代码规范 result ={ success:”true”,//true表示成功,false表示失败. data:{}, //数据 errorCode: ...

  9. 关于oracle的基础增删改查操作总结

    ① 进入数据库: sqlplus“/as sysdba” 或者sqlplus / as sysdba 注:完整格式:  sqlplus“用户名/密码@数据库名as sysdba” 注:请注意,sqlp ...

  10. 初识Java作业

    初识Java作业 一.    填空题 Java技术按照用途不同分为三大版本,分别是JavaSE.     javaEE       和JavaMe Java虚拟机就是一个虚拟的用于执行  .class ...