JdbcPagingItemReader问题,在INNER JOIN SQL中为DB2 SortKey提供表名别名

时间:2016-10-04 07:09:39

标签: java spring-batch

我正在尝试为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")均如上所述失败。

0 个答案:

没有答案