SpringJPA 不支持MySQL 的ifnull函数

12 篇文章 0 订阅
8 篇文章 0 订阅

问题:

在我的一条更新语句中如下:

 @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的一个坑点,后来人勿踩!!!!!


记录数据库中几个为空判断的函数:

mysql:

1、IFNULL(filedName,'defaultVal')

IFNULL 判断第一个参数为NULL 时,返回第二个参数的值

2、COALESCE(param1,param2,...)

COALESCE接收可变参数,它会返回第一个不为空的参数的值

SQLSERVER:

ISNULL 用法同mysql中的ifnull

ORACLE

nvl(prams1,'val') 用法同mysql中的ifnull

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值