学习记录687@spring data jpa 动态传递list参数并判断list是否为空

实际应用中需要在spring data jpa中使用原生sql,传递的参数是list,要根据list判断是否为空来判断是否要使用这个参数。

尝试了很多方法,比如size、length、is null、!=null等等,都要报错,比如could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not extract ResultSet 错误。

最后查阅网上文章使用如下方式得到了正确的结果。

java 复制代码
@Query("SELECT *  FROM order \n" +
       "WHERE" +
       "(COALESCE(?1) IS NULL OR (id IN ?1))")
List<Order> getOrders(List<Long> ids);

这里的关键是COALESCE函数,此函数表示传进去的list的值判断,返回第一个不为null的值,如果list为空则返回null。这样就相当于对list进行判断并执行id IN了。

相关推荐
我的xiaodoujiao19 分钟前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 41--自定义定制化展示 Allure 测试报告内容
python·学习·测试工具·pytest
码农客栈21 分钟前
小程序学习(十一)之uni-app和原生小程序开发区别
学习·小程序·uni-app
淦。。。。25 分钟前
题解:P14013 [POCamp 2023] 送钱 / The Generous Traveler
开发语言·c++·经验分享·学习·其他·娱乐·新浪微博
小裕哥略帅33 分钟前
PMP学习笔记--过程
笔记·学习
好奇龙猫41 分钟前
【人工智能学习-AI入试相关题目练习-第六次】
人工智能·学习
[H*]1 小时前
鸿蒙跨端Flutter学习:InheritedWidget嵌套使用
学习·flutter
2501_941864961 小时前
科学记忆法提升学习效率
学习
好奇龙猫1 小时前
【日语学习-日语知识点小记-日本語体系構造-JLPT-N2前期阶段-第一阶段(4):单词语法】
学习
别了,李亚普诺夫1 小时前
运算放大器的参数、选型与应用-学习笔记
笔记·学习
笃行客从不躺平1 小时前
PG SQL 行转列记录
数据库·sql