当前位置:   article > 正文

SpringJPA 不支持MySQL 的ifnull函数_jpa ifnull

jpa ifnull

问题:

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

  1. @Modifying
  2. @Query(value = "UPDATE syzy_beiJianKuCun SET kuCunNum = ifnull(kuCunNum,0)-(?2) WHERE id= ?1",nativeQuery = true)
  3. void updateBeiJianKuCunById(String id, float xiaoHaoNum);

然后问题出现了,当字段为null时,数据库此字段死活不更新;

解决思路:

是不是语句有问题?

于是乎,我们把我的sql语句拿出来,在mysql中执行,没问题,数据更新了!!!!!

既然sql没问题,那就怀疑是不是SpringJPA对这个ifnull的支持性问题了。。。

于是在网上找到了这个:

 果断修改我的代码:

  1. @Modifying
  2. @Query(value = "UPDATE syzy_beiJianKuCun SET kuCunNum = COALESCE(kuCunNum,0)-(?2) WHERE id= ?1",nativeQuery = true)
  3. 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

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/974878
推荐阅读
相关标签
  

闽ICP备14008679号