有个问题困扰很久,一直没找出问题,今天准备在讨论区贴出来,寻求帮助,在整理问题的过程中,灵光一闪,好像忽然明白了问题所在。后来经过测试,确定无误。
犯错的具体经过就不一一敖述,怪不好意思的,怪自己不够聪明,思维僵化,总归一个字,笨。下面直接说问题根源
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点,第一个八小时用来处理复杂度较高的工作,第二个八小时用来处理日常及思考未来,第三个八小时做自己喜欢的事,比如看书,陪家人,睡觉。以前尝试过这种生活方式,感觉很好,一天都充满精神,现在想重新拾起,给自己一个好的身体和状态。