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

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

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

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点,第一个八小时用来处理复杂度较高的工作,第二个八小时用来处理日常及思考未来,第三个八小时做自己喜欢的事,比如看书,陪家人,睡觉。以前尝试过这种生活方式,感觉很好,一天都充满精神,现在想重新拾起,给自己一个好的身体和状态。

你可能感兴趣的:(hql语句设置参数的问题,query.setEntity())