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

相关推荐
FellAveal11 分钟前
【Go语言入门学习笔记】Part13.结构体与接口
笔记·学习·golang
Leekwen28 分钟前
认识人与人的大不同
学习·思考·生活·认知高度·审视自己
一只小菜鸡..34 分钟前
Stanford CS144 学习笔记 (九):大师访谈与互联网的未来
笔记·学习
范什么特西34 分钟前
每日学习-06
学习
Databend1 小时前
用 QUALIFY 写出更清晰的窗口函数 SQL
数据库·sql·数据分析
woshihuanglaoshi1 小时前
参数验证_Flutter在鸿蒙平台确保路由参数类型安全
学习·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
一本杂志2 小时前
某航 cookies:ssxmod_itna、ssxmod_itna2参数逆向分析思路学习
学习
星恒随风2 小时前
C++ STL 详解:list 的使用、迭代器失效、模拟实现与 vector 对比
开发语言·数据结构·c++·笔记·学习·list
red_redemption3 小时前
自由学习记录(208)
学习
一起努力啊~3 小时前
DataWhale组队学习笔记--llm-algo-leetcode(五)
笔记·学习·llm