在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中的占位符?参数与命名参数:name设值方式搞混

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

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

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

  8. slf4j中的Logger 使用占位符{} 来传入参数记录日志信息

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

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

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

随机推荐

  1. 如何在美国公司写project plan 邮件--以hadoop安装和Mahout数据分析为例子

    Hi, XXX (boss name) Project Title:  Hadoop installation and Data analysis based on Mahout Deliverabl ...

  2. WCF如何在浏览器访问

    1.新建wcf服务看到有如下两个方法,在浏览器调用框中的方法.

  3. android ellipsize 属性详解

    TextView中内容过长时添加省略号的属性,即ellipsize 用法如下: 在XML文件中设置: android:ellipsize = "end" //省略号在结尾 andr ...

  4. 是一个IPV6地址

    每次在VS上调试,发现本机地址是 ::1 这种就不解.由于太忙而没关注,今天看了IPV6的文章才明白.原来这是个IPV6地址,也就是本机环回地址.以前是127.0.0.1,IPV4版本,而IPV6的就 ...

  5. BaseFragment的定义—所有Fragment的父类

    public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener { prote ...

  6. python 的内建函数

    lambda 函数:lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值 1. map/reduce 函数 (1)map()函数接收两个参数,一个是函数,一个是序列,map将传入 ...

  7. FTP配置参数

    格式 vsftpd.conf 的格式非常简单,每行要么是一个注释,要么是一个指令.注释行以#开始并被忽略掉.指令行格式如下: 配置项=参数值 很重要的一点是,这个格式里不存在任何空格. 默认的,每一个 ...

  8. Sql Server专题一:索引(中)

    写在前面的废话: 索引这个知识点,我前前后后不知道看了多少边,网上的文章五花八门,搞的我晕头转向,搞的牛逼点的就是测试索引带来的好处,还搞一大堆的测试数据出来,有意思吗?MS自己不会测试吗?这样的测试 ...

  9. JSON.parse()和JSON.stringify()的用法

    JSON.parse()是用于从一个字符串中解析出json对象,如下所示 var str = '{"name":"flsummer","age&quo ...

  10. 你应该知道的CSS文字大小单位PX、EM、PT[转]

    摘要: 这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章, 题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷.我一直也搞不清楚px与em之间的关系和特点,看过以后确实收获很大.平 ...