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

相关推荐
Csvn17 分钟前
📊 SQL 入门 Day 17:数据更新与删除
后端·sql
杜子不疼.19 分钟前
不会SQL也能改数据库?我用NocoDB把MySQL变成了表格界面
数据库·sql·mysql
今天AI了吗25 分钟前
AI辅助数据库工具链对比:从SQL优化到架构设计的主流方案评估
数据库·人工智能·sql
lifallen36 分钟前
edit-article:AI 味来自跳级
人工智能·学习·ai·ai编程·ai写作
xian_wwq1 小时前
【学习笔记】工具设计,Agent 的手比大脑更容易出问题-8/16
笔记·学习·agent
霸道流氓气质1 小时前
Mysql中慢 SQL 优化实战:减少不必要的 JOIN 关联
sql·mysql·mybatis
晴天161 小时前
Agent 全栈学习笔记 1-Day14
数据库·笔记·学习
一个天蝎座 白勺 程序猿1 小时前
SQL Server数据迁移金仓性能优化实战:从慢SQL到系统瓶颈,一套组合拳打下来
sql·oracle·性能优化·kingbasees
.柒宇.2 小时前
运维常见面试题_02_数据库
运维·数据库·sql·面试
AI的探索之旅2 小时前
AI + LLM Wiki 高效学习 OpenCV:我的 8 步闭环方法论
人工智能·opencv·学习