我正在尝试为JdbcPagingItemReader
SQL编写INNER JOIN
。
DataBase是DB2。
SQL在两个表上执行INNER JOIN
,因此使用表名别名来连接列名。两个表中都有SORT_KEY
列。
QueryProvider在我的查询中为页面 - 1 以后的查询添加了这两件事(即不是第一页,而是病房的第二页),
1. WHERE CLAUSE中的AND ((SORT_KEY > ))
2。ORDER BY SORT_KEY ASC
设置排序键列时,
1.如果我没有指定表别名,我会在 -203上面的#1点的WHERE子句中得到此SQL错误。列参考名称是一个很难
2.如果我在queryProviderBean.setSortKey()
中为排序键列指定了表别名,我会得到上述第2点ORDER BY
子句的错误列名不存在
问题似乎与this jira ticket
重复该帖子中提到了hack但没有修复。
我不确定如何修复问题?通过添加自定义查询提供程序或组织SQL本身?
我使用的是spring batch version 3.0.7。
我真的需要使用JdbcPagingItemReader
,因为我无法一次性读取整个数据而且我只有一个表列,它是页面排序的候选者,并且该列存在于两个表中。
首页查询工作正常,其唯一的剩余页面查询会产生问题。查询如下,
SELECT ta.SORT_KEY FROM A ta INNER JOIN B tb ON ta.SORT_KEY=tb.SORT_KEY WHERE ta.COLUMN_A=?
queryProviderBean.setSortKey("SORT_KEY")
和queryProviderBean.setSortKey("ta.SORT_KEY")
均如上所述失败。