博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate4 HQL查询占位符的问题
阅读量:7223 次
发布时间:2019-06-29

本文共 1529 字,大约阅读时间需要 5 分钟。

hot3.png

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

参考资料:

Query query = sessionFactory.openSession().createQuery("from User u where u.name = ?")                            .setParamter(0,"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或者命名参数的占位符

// 命名参数的方式 Query query = sessionFactory.openSession().createQuery("from User u where u.name =:name")                            .setParamter("name","line");

// 有问题的JPA的方式 Query query = sessionFactory.openSession().createQuery("from User u where u.name =?0")                            .setParamter(0,"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 causeorg.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")                            .setParamter("0","line"); //?后面的数字是可以随意的,不必要从0开始

转载于:https://my.oschina.net/line926/blog/202869

你可能感兴趣的文章
oracle体系结构基础
查看>>
有关TCP和UDP 粘包 消息保护边界
查看>>
Mono为何能跨平台?聊聊CIL(MSIL)
查看>>
安装scrapy问题:-bash:scrapy:command not found
查看>>
CentOS7 重置root密码
查看>>
博客作业四
查看>>
Scanner 输入---从键盘输入两个数进行相加
查看>>
test
查看>>
说无可说
查看>>
mysql 语句优化
查看>>
SCP 命令参数使用详解(最详细使用指南)
查看>>
windows cmd color setup
查看>>
一些问题
查看>>
ubuntu配置cudnn
查看>>
P1242 新汉诺塔 && UVA10795 A Different Task
查看>>
从零开始学习PYTHON3讲义(十一)计算器升级啦
查看>>
从零开始学习PYTHON3讲义(三)写第一个程序
查看>>
WebGis设计模式
查看>>
cocos2dx ScrollView 测试一 触摸事件优先级和自动调整
查看>>
django 使用mysql数据库的流程
查看>>