文档章节

hql语句设置参数的问题,query.setEntity()

疯狂的海豚
 疯狂的海豚
发布于 2014/06/04 13:38
字数 565
阅读 2520
收藏 1

有个问题困扰很久,一直没找出问题,今天准备在讨论区贴出来,寻求帮助,在整理问题的过程中,灵光一闪,好像忽然明白了问题所在。后来经过测试,确定无误。

犯错的具体经过就不一一敖述,怪不好意思的,怪自己不够聪明,思维僵化,总归一个字,笨。下面直接说问题根源

String hql = "update SysUser c set c.userStatus=:userStatus,c.userPass=:userPass,c.sysRole=:sysRole where c.userId=:userId";
   Query query = sessionFactory.getCurrentSession().createQuery(hql);
   query.setInteger("userStatus", user.getUserStatus());
   query.setString("userPass", user.getUserPass());
   query.setEntity("sysRole", user.getSysRole()); //关键点在这里 setEntity
   query.setLong("userId", user.getUserId());

 query.setEntity("sysRole", user.getSysRole());  当user.getSysRole()==null时,程序就会报错

报错提示为:entity for parameter binding cannot be null

如果必须要把user.getSysRole()设置为空,那怎么做呢?

query.setEntity("sysRole", null);或query.setEntity("sysRole", "");都报错,设置空字符串也是不行的,这里不能放String类型。直接按照sql语句的思路处理

String hql = "update SysUser c set ..省略..,c.sysRole='' where c.userId=:userId";

直接设置为空就好,虽然c.sysRole是对象类型,但这里可以按照sql语法来处理。

嘿嘿,就这样了。

端午节回家过节,结果在家吹风扇吹感冒了,哥们这强悍的身体,小风寒算啥,今天一早泡个热水脚,现在头也不晕了,眼也不花了。但终究是感冒,身体抵抗力下降了啊,运动少,还通宵。比尔盖茨年轻时虽然也通宵达旦的工作,但微软全公司的员工可都是免费办健身卡滴。

这几天想恢复正常健康的生活方式,便找出以前看过的一本书,网上找的《4点起床(最养生和高效的时间管理)》一书,作者把一天分为3个八小时,4-12点,12-20点,20点-凌晨4点,第一个八小时用来处理复杂度较高的工作,第二个八小时用来处理日常及思考未来,第三个八小时做自己喜欢的事,比如看书,陪家人,睡觉。以前尝试过这种生活方式,感觉很好,一天都充满精神,现在想重新拾起,给自己一个好的身体和状态。

© 著作权归作者所有

共有 人打赏支持
疯狂的海豚
粉丝 2
博文 19
码字总数 10461
作品 0
合肥
程序员
Java程序员从笨鸟到菜鸟之(六十四)细谈Hibernate(十五)HQL与QBC查询方式详解

首先来看一下,hibernate提供的几种检索方式: 1.导航对象图检索方式 :根据已经加载的对象,导航到其他对象。例如,对于已经加载的Customer对象,调用它的getOrders().iterator()方法就可以...

长平狐
2012/11/12
155
0
hibernate hql 分页查询

今天封装了自己的hibernateDao,主要是基于hql的,期间遇到一个问题,最后解决了,和大家分享分享 其他hibernate的查询,像QBE,QBC,这些就不说了,如果用hibernate还是hql最强大,也很容易...

peanutmain
2012/06/10
0
0
Hibernate查询技术之HQL语句

1、session中的get( )和load( )方法来查询对象。但其查询功能有限。 2、HQL查询方式 使用传统的JDBC API来查询数据,需要编写复杂的SQL语句,然后还要将查询结果以对象的形式进行封装,放到集...

大黄有故事
2016/10/30
0
0
hibernate hql查询(需完善)

使用HQL需要四步 得到Session 编写HQL语句 创建Query对象(Query接口是HQL 查询接口。它提供了各种的查询功能) 执行查询,得到结果 sessionFactory =new Configuration().configure().buil...

zdatbit
2016/03/10
44
0
hibernate--HQL语法与详细解释

HQL查询: Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此 Hibernate将HQL查询方式立...

随智阔
2014/03/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
4
0
现场看路演了!

HiBlock
昨天
8
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
7
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
8
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部