4.3.5.2版本oracle的租户模式,查询出现数组越界问题

驱动用的是2.4.12版本,查询条件拼接sql如下,出现了数组越界问题,appidList 不传参没有问题,传参就出现下面这个问题
报错信息

Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index: 0

The error may involve defaultParameterMap

The error occurred while setting parameters

SQL: SELECT count(0) AS total FROM test WHERE is_deleted = ‘N’ AND strategy_config_type = ? AND ( app_id LIKE '% ’ || ? || ‘%’) AND 1 = 0

Cause: java.lang.IndexOutOfBoundsException: Index: 0

at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149)

判断条件:
<if appidList != null and appidList.size() > 0">
AND (
foreach collection=“appidList” item=“entity” separator=“OR”>”
app_id ‘%’ || #{entity} || ‘%’
/foreach>“
)

6 个赞

遇到“数组越界”错误通常与PL/SQL代码中的错误处理有关,这种错误可能是由于在处理数组或集合时,访问了不存在的索引位置。

5 个赞

之前使用的是mysql,本次改造是为了适配ob的oracle模式,只是改了语法,其他的代码没有变动,受限环境问题,没办法在本地debug,出现这个问题很奇怪

还有其他情况?

厉害:+1:t2:

你好,你提的这个技术问题牵涉到OceanBase企业版范围内的功能细节;针对此类问题,建议你通过以下方式寻求帮助:

  1. 如你所在的企业客户已签署OceanBase企业版销售合同,请你联系客户经理;

  2. 如你所在的企业客户尚未签署OceanBase企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。

另外,我们欢迎你使用社区版,并在论坛/社群中分享你对社区版本的想法、经验和问题,与其他社区成员共同交流。

用其他版本有问题没?

没有找到具体原因,等有机会debug在研究一下,目前使用concat()双层嵌套解决

厉害