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

相关推荐
硬件yun23 分钟前
Flyback反激电路学习参数计算
学习
mudtools26 分钟前
如何设计易维护、低学习成本的飞书.NET SDK组件
学习·.net·飞书
一直都在57234 分钟前
Spring:Bean管理(二)
java·sql·spring
崇山峻岭之间41 分钟前
Matlab学习记录19
学习·算法·matlab
czlczl2002092542 分钟前
MybatisPlusInterceptor实现无感修改SQL的底层原理(源码)
数据库·spring boot·后端·sql
.鸣1 小时前
CSDN Java反射
java·学习
Hello.Reader1 小时前
Flink JDBC Driver把 Flink SQL Gateway 变成“数据库”,让 BI / 工具 / 应用直接用 JDBC 跑 Flink SQL
数据库·sql·flink
MarkHD1 小时前
智能体在车联网中的应用:第37天 CARLA仿真中的端到端车道保持:基于CNN模仿学习的自动驾驶实践
学习·cnn·自动驾驶
一 乐1 小时前
景区管理|基于springboot + vue景区管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
week_泽1 小时前
网安基础_1_补充_网络安全渗透测试学习笔记
笔记·学习·web安全