Hql参数占位符使用(转+整理)
在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
转+整理自:Hibernate4 HQL查询占位符的问题 https://my.oschina.net/line926/blog/202869
Hql参数占位符使用(转+整理)的更多相关文章
- Hibernate HQL基础 使用参数占位符
在HQL中有两种方法实现使用参数占用符 1.使用? 使用?设置参数占位符,之后通过setString()和setInteger()等方法为其赋值.如: Query query = session.cr ...
- Hql中占位符(转)
在新的Hibernate 4版本中,对于Hql有一点点改变,如果你还是按照以前的方式去编写HQL并且用了以下占位符的方式,就会得到一个警告. 参考资料:https://hibernate.atlass ...
- 。。。JDBC里面的sql与hibernate里面的hql有关占位符"?"的总结。。。
今天在看Hibernate的时候,似乎又有了一些收获的东东,嘻嘻... 我记得很清楚:以前用JDBC操作数据库的时候是这样的: String sql = "select * from use ...
- Android string资源 包含 数学符号等特殊字符 及 参数占位符
定义:<?xml version="1.0" encoding="utf-8"?><resources> <string n ...
- java:Hibernate框架3(使用Myeclipse逆向工程生成实体和配置信息,hql语句各种查询(使用hibernate执行原生SQL语句,占位符和命名参数,封装Vo查询多个属性,聚合函数,链接查询,命名查询),Criteria)
1.使用Myeclipse逆向工程生成实体和配置信息: 步骤1:配置MyEclipse Database Explorer: 步骤2:为项目添加hibernate的依赖: 此处打开后,点击next进入 ...
- hibernate查询语句hql中的占位符?参数与命名参数:name设值方式搞混
先贴出异常 Struts has detected an unhandled exception: Messages: Position beyond number of declared ordin ...
- 【SpringMVC】SpringMVC系列3之@PathVariable映射URL占位符参数
3.@PathVariable映射URL占位符参数 3.1.概述 带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义. ...
- slf4j中的Logger 使用占位符{} 来传入参数记录日志信息
首先要导入 slf4j包中的2个类 import org.slf4j.Logger;import org.slf4j.LoggerFactory; 再定义如下 private final static ...
- Hibernate4.1之后关于占位符的问题
hibernate 4.1之后对于HQL中查询参数的占位符做了改进,如果仍然用老式的占位符会有类似如下的告警信息 [main] WARN [org.hibernate.hql.internal.ast ...
随机推荐
- Hortonworks 用于做 Sentimental Analysis的Hiveddl.sql 文件
The hiveddl.sql script has performed the following steps to refine the data: Converted the raw Twitt ...
- Struts2中使用Session的两种方法
在Struts2里,如果需要在Action中使用到session,可以使用下面两种方式: 通过ActionContext 类中的方法getSession得到 Action实现org.apache.st ...
- android ellipsize 属性详解
TextView中内容过长时添加省略号的属性,即ellipsize 用法如下: 在XML文件中设置: android:ellipsize = "end" //省略号在结尾 andr ...
- Eclipse安装与搭建Maven
Maven的具体参考书可以看:<Maven实战> 下载maven可以到:http://maven.apache.org/ Maven的eclipse基本使用可以在这里看到:http://w ...
- 【Android】设备标识简介(imei imsi mac地址)
IMEI: 1- 意义: 参考http://zh.wikipedia.org/zh-cn/IMEI 国际移动设备辨识码 ,共15位,和厂商,产地等有关. 2- 获取: 直接查看设备信息,设置-关于手 ...
- 给WebApp加一个“壳”,实现Andriod系统添加到桌面
IOS系统的Safari浏览器有一个“添加到桌面”的功能,能在手机桌面上为你的Webapp添加一个快捷方式,其外观和Native App看起来一样. 这个功能对Webapp来说太有用了,它能让用户像“ ...
- Python成长之路_装饰器
一.初入装饰器 1.首先呢我们有这么一段代码,这段代码假设是N个业务部门的函数 def f1(aaa): print('我是F1业务') if aaa == 'f1': return 'ok' def ...
- lol.py
#!/usr/bin/env python # -*- coding: utf-8 -*- import os from twisted.application import service from ...
- 字符串水题(hdoj1049)
Problem Description Password security is a tricky thing. Users prefer simple passwords that are easy ...
- virtual box Failed to load unit ""pgm" 的error
原因:没有正常的待机或者关机退出. 解决办法:右键清除保存状况.