【发布时间】:2018-09-20 13:57:53
【问题描述】:
当 JdbcPagingItemReader 查询具有连接和别名时,Spring 批处理步骤失败。当我删除连接并从员工表中进行简单查询时,它工作正常。下面是失败的代码 sn-p。有没有人遇到过这样的问题?任何帮助,将不胜感激。
spring-batch-core-4.0.1.RELEASE spring-boot-2.0.0.RELEASE
@Autowired
@Bean(destroyMethod = "")
@StepScope
public JdbcPagingItemReader<String> dbItemReader(final DataSource dataSource, final PreparedStatementSetter paramSetter) {
return new JdbcPagingItemReaderBuilder<String>().name("dbReader").dataSource(dataSource) .queryProvider(queryProvider(prodDataSource)).rowMapper((rs, rowNum) -> {
return rs.getString("first_name");
}).pageSize(1000).fetchSize(1000).build();
}
@Bean
public PagingQueryProvider queryProvider(final DataSource dataSource) {
final OraclePagingQueryProvider provider = new OraclePagingQueryProvider();
provider.setSelectClause("select first_name");
provider.setFromClause("from employee e join department d on e.dept_no= d.dept_no");
provider.setWhereClause("where d.dept_name in ('HR','Marketing')");
final Map<String, Order> sortKeys = new HashMap<String, Order>();
sortKeys.put("e.dept_no", Order.ASCENDING);
sortKeys.put("e.employee_id", Order.ASCENDING);
provider.setSortKeys(sortKeys);
try {
return provider;
} catch (final Exception e) {
e.printStackTrace();
return null;
}
}
原因:java.sql.SQLException: Invalid column name at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3965) ~[ojdbc6-11.2.0.3.jar:12.1.0.1.0] 在 oracle.jdbc.driver.InsensitiveScrollableResultSet.findColumn(InsensitiveScrollableResultSet.java:299) ~[ojdbc6-11.2.0.3.jar:12.1.0.1.0] 在 oracle.jdbc.driver.GeneratedResultSet.getObject(GeneratedResultSet.java:1394) ~[ojdbc6-11.2.0.3.jar:12.1.0.1.0] 在 org.apache.commons.dbcp.DelegatingResultSet.getObject(DelegatingResultSet.java:328) ~[commons-dbcp-1.4.jar:1.4] 在 org.apache.commons.dbcp.DelegatingResultSet.getObject(DelegatingResultSet.java:328) ~[commons-dbcp-1.4.jar:1.4] 在 org.springframework.batch.item.database.JdbcPagingItemReader$PagingRowMapper.mapRow(JdbcPagingItemReader.java:333) ~[spring-batch-infrastructure-4.0.0.RELEASE.jar:4.0.0.RELEASE] 在 org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:93) ~[spring-jdbc-5.0.4.RELEASE.jar:5.0.4.RELEASE] 在 org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:60) ~[spring-jdbc-5.0.4.RELEASE.jar:5.0.4.RELEASE] 在 org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:667) ~[spring-jdbc-5.0.4.RELEASE.jar:5.0.4.RELEASE] 在 org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:605) ~[spring-jdbc-5.0.4.RELEASE.jar:5.0.4.RELEASE] ... 72个常用框架 省略
【问题讨论】:
标签: java spring-boot jdbc spring-batch