Java JdbcPagingItemReader在DB2 SortKey的内部联接SQL中出现表名别名问题
我正在尝试为内部联接SQL编写JdbcPagingItemReader 数据库是DB2 SQL在两个表上进行内部联接,因此使用表名别名联接列名。两个表中都有SORT_KEY列 QueryProvider在我的查询中添加了这两项内容,用于第1页以后的查询,即不是第一页,而是第二页 1.1在WHERE子句中对_KEY>进行排序 2.按排序键ASC排序 在设置排序键列时 1.如果我没有指定表别名,我会在-203上面的point1的WHERE子句中得到这个SQL错误。对列名的引用是不明确的 2.如果我在queryProviderBean.setSortKey中为排序键列指定了表别名,则在上面第2点的ORDER BY子句中会出现错误,即列名不存在 这个问题似乎是重复的 那篇文章提到了一个黑客,但没有修复 我不知道如何解决这个问题?通过添加自定义查询提供程序还是通过组织SQL本身 我使用的是SpringBatch版本3.0.7 我真的需要使用JdbcPagingItemReader,因为我不能一次性读取整个数据,而且我只有一个表列,它是页面排序的候选列,并且该列存在于两个连接的表中 第一页查询工作正常,其唯一剩余的页查询产生问题。查询如下:Java JdbcPagingItemReader在DB2 SortKey的内部联接SQL中出现表名别名问题,java,spring-batch,Java,Spring Batch,我正在尝试为内部联接SQL编写JdbcPagingItemReader 数据库是DB2 SQL在两个表上进行内部联接,因此使用表名别名联接列名。两个表中都有SORT_KEY列 QueryProvider在我的查询中添加了这两项内容,用于第1页以后的查询,即不是第一页,而是第二页 1.1在WHERE子句中对_KEY>进行排序 2.按排序键ASC排序 在设置排序键列时 1.如果我没有指定表别名,我会在-203上面的point1的WHERE子句中得到这个SQL错误。对列名的引用是不明确的 2.如果我在
SELECT ta.SORT_KEY FROM A ta INNER JOIN B tb ON ta.SORT_KEY=tb.SORT_KEY WHERE ta.COLUMN_A=?
如上所述,queryProviderBean.SetPortKeySort_键和queryProviderBean.SetPortKeyTA.SORT_键都失败 可以尝试将查询包装到子查询中吗?例如:从SELECT ta中选择SORT_KEY。从ta内部连接中选择SORT_KEY。在ta上连接B tb。SORT_KEY=tb.SORT_KEY mysubquery。这样就不会有任何歧义,您可以使用queryProviderBean.setSortKeySORT_KEY命令实际上,我给出了一个简单的示例。我也有一个WHERE-after内部连接,如果没有它,内部查询将返回大量数据。批处理查询提供程序需要分别使用selectClause、fromClause和whereClause,我没有办法将它们放在包含内部查询的selectClause中的WHERE中。我已经更新了相关的查询以使其更清晰。好的,那么包装B表并重命名SORT_键怎么样?从ta内部连接中选择ta.SORT\u KEY,从ta上的B tb中选择SORT\u KEY作为SORT\u KEY\B。SORT\u KEY=tb.SORT\u KEY\B在db2提示符下工作,让我将其放入java程序中。谢谢!!内部查询从B tb中选择SORT_KEY作为SORT_KEY会不会影响程序的内存使用,因为我想我正在内存中加载完整的表?顺便说一句,语法在Spring批处理中起作用。您可以尝试将查询包装到子查询中吗?例如:从SELECT ta中选择SORT_KEY。从ta内部连接中选择SORT_KEY。在ta上连接B tb。SORT_KEY=tb.SORT_KEY mysubquery。这样就不会有任何歧义,您可以使用queryProviderBean.setSortKeySORT_KEY命令实际上,我给出了一个简单的示例。我也有一个WHERE-after内部连接,如果没有它,内部查询将返回大量数据。批处理查询提供程序需要分别使用selectClause、fromClause和whereClause,我没有办法将它们放在包含内部查询的selectClause中的WHERE中。我已经更新了相关的查询以使其更清晰。好的,那么包装B表并重命名SORT_键怎么样?从ta内部连接中选择ta.SORT\u KEY,从ta上的B tb中选择SORT\u KEY作为SORT\u KEY\B。SORT\u KEY=tb.SORT\u KEY\B在db2提示符下工作,让我将其放入java程序中。谢谢!!内部查询从B tb中选择SORT_KEY作为SORT_KEY会不会影响程序的内存使用,因为我想我正在内存中加载完整的表?顺便说一下,语法在Spring批处理中起作用。