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

相关推荐
优雅的潮叭1 小时前
c++ 学习笔记之 shared_ptr
c++·笔记·学习
am心1 小时前
学习笔记-用户下单
笔记·学习
微露清风1 小时前
系统性学习C++-第二十二讲-C++11
java·c++·学习
进阶小白猿2 小时前
Java技术八股学习Day20
java·开发语言·学习
renhongxia13 小时前
学习基于数字孪生的工艺参数优化
学习
gjf05_053 小时前
人该怎样活着呢?版本68.6
学习
GISer_Jing3 小时前
AI Agent 智能体的“深度思考”与“安全防线”
人工智能·学习·安全·aigc
香气袭人知骤暖4 小时前
SQL慢查询常见优化步骤
android·数据库·sql
Star Learning Python4 小时前
MySQL日期时间的处理函数
数据库·sql
我命由我123454 小时前
充血模型与贫血模型
java·服务器·后端·学习·架构·java-ee·系统架构