现象:
在mysql查询工具中,sql可以正常跑,但在如下JPA代码中报String index out of range 0异常。
// 这里抛了String index out of range 0 的异常
int size = jdbcTemplate.queryForList(sql.toString()).size();
补充说明,这个错误,印象中之前是没有的,怀疑是后来加了sharding相关的数据安全的jar包引起的。
问题排查:
受网上个别文章中提到的表数据是空字符串而不是null的启发,发现我的查询sql中有一个字段列受需求不明确限制,暂用了默认的空字符返回。尝试把空字符串替换为其他非空的字符串后,解决了问题。(直接去掉该字段也可以解决)
查询sql修改前,查询逻辑示例如下:
select '' showFieldName from dual;
sql修改后,查询逻辑示例如下:
select '-' showFieldName from dual;