赞
踩
在我的一条更新语句中如下:
- @Modifying
- @Query(value = "UPDATE syzy_beiJianKuCun SET kuCunNum = ifnull(kuCunNum,0)-(?2) WHERE id= ?1",nativeQuery = true)
- void updateBeiJianKuCunById(String id, float xiaoHaoNum);
然后问题出现了,当字段为null时,数据库此字段死活不更新;
是不是语句有问题?
于是乎,我们把我的sql语句拿出来,在mysql中执行,没问题,数据更新了!!!!!
既然sql没问题,那就怀疑是不是SpringJPA对这个ifnull的支持性问题了。。。
于是在网上找到了这个:
果断修改我的代码:
- @Modifying
- @Query(value = "UPDATE syzy_beiJianKuCun SET kuCunNum = COALESCE(kuCunNum,0)-(?2) WHERE id= ?1",nativeQuery = true)
- void updateBeiJianKuCunById(String id, float xiaoHaoNum);
将ifnull 换成了coalesce。问题得到处理。只能说是SpringJPA的一个坑点,后来人勿踩!!!!!
记录数据库中几个为空判断的函数:
1、IFNULL(filedName,'defaultVal')
IFNULL 判断第一个参数为NULL 时,返回第二个参数的值
2、COALESCE(param1,param2,...)
COALESCE接收可变参数,它会返回第一个不为空的参数的值
ISNULL 用法同mysql中的ifnull
nvl(prams1,'val') 用法同mysql中的ifnull
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。