spring-data-jpa使用oracle作为数据源时in查询在1000条以上 ,报ORA_01795的错误
原文连接: https://segmentfault.com/a/1190000041913304?sort=votes
目的
解决项目中使用spring-data-jpa
,采用oracle 11g
作为数据源时,当in
查询后面的条件超过1000条后,oracle
报ORA_01795
的异常。
思路
问题在于当前版本的oracle
不支持单个in
查询超过1000的情形,思路是通过jpa
提供给我们的有实体类生成SQL
后、未执行前的拦截器,对生成的SQL
进行判断,如果存在上述的超过1000的情形,将SQL
拆分成多个in
的组合、通过or
连接。
例如:
# jpa转换的SQL通常是如下形式,假如in (?,?,?....)有超过1000个?
select id,name,gender from user where id in(? ,? ,? ,? ,? ,? ,? ,? ,? ,?, ?);
# 将其拆分
select id,name,gender from user where (id in(? ,? ,? ,? ,? ,?) or id in (,? ,? ,?) or id in(?, ?));
代码
标签:
java jpa
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2022-03-23 springboot允许跨域注解_SpringBoot项目针对跨域问题的三种解决方案 在Spring Boot 中给我们提供了一个注解 @CrossOrigin 来实现跨域
2022-03-23 C# WebService创建与使用
2022-03-23 Thymeleaf - 使用方法及国际化(超详细) springboot Thymeleaf是一个和Velocity、FreeMarker 类似的模板引擎,它在有网络和无网络的环境下皆可运行
2022-03-23 Udesk微前端之路
2022-03-23 jpa 常用查询方法记录
2022-03-23 mybatis注解多表查询
2022-03-23 Mybatis基于注解实现多表查询