背景:连接远程的SQL数据库,可以连接上这个远程的数据库,远程中的数据库中有这个视图,但是报错信息中却表明表或者视图不存在。
错误内容:org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException for SQL []; SQL state [HY000]; error code [3];
ERROR-262147: REALIZER_TRANSLATE_ERROR Report Table or View does not exist ;
原因是:select * from TEST_TABLE where id in(1,2,3,4,5) and (a.name = 'ss' and a.`desc` = 'bb' );
其中 表名中并没有为这个表加上别名, 而在where后面的条件中采用了别名的形式,导致a.s所在的表或视图找不到。
(a.name = 'ss' and a.`desc` = 'bb' )是由别处获取到的json数据。
解决办法是:将后面接入的where条件中的a. 用"" 替换掉。
因为(a.)前缀经常因为所处的数据环境不同而变化,故将此前缀做成可配置的。