学习记录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了。

相关推荐
lzhdim4 分钟前
SQL 入门 8:SQL 复杂查询:子查询与ALL关键词
数据库·sql·mysql
盐焗西兰花11 分钟前
鸿蒙学习实战之路-Share Kit系列(15/17)-手机与PC/2in1设备间分享
学习·智能手机·harmonyos
憧憬从前16 分钟前
算法学习记录DAY1
c++·学习
l1t18 分钟前
DeepSeek辅助编写的Oracle dmp转SQL脚本和CSV文件工具
数据库·人工智能·sql·oracle
bIo7lyA8v21 分钟前
从零学习Kafka:集群架构和基本概念
学习·架构·kafka
風清掦37 分钟前
【江科大STM32学习笔记-10】I2C通信协议 - 10.1 软件I2C读写MPU6050
笔记·stm32·单片机·嵌入式硬件·物联网·学习
Devlive 开源社区1 小时前
DockMaster Pro v1.0.0 正式发布
学习
阿荻在肝了1 小时前
Agent学习三:构建第一个 Agent(详细完整版)
学习
盐焗西兰花2 小时前
鸿蒙学习实战之路-Share Kit系列(16/17)-隔空传送与可信任设备
学习·华为·harmonyos
少许极端2 小时前
算法奇妙屋(四十二)-贪心算法学习之路 9
学习·算法·贪心算法