我在Spring Batch项目中用于JDBCPagingItemReader的查询是:
SELECT
account_login_log_id log_id,
created_at reference_time
FROM account_login_log
WHERE account_login_log_id > 1000
ORDER BY account_login_log_id
RowMapper捕获从阅读器获取的项目并创建名为say,SomeGeneralLog的对象。
SomeGeneralLog log = new SomeGeneralLog();
log.setLogId(rs.getInt("log_id");
log.setReferenceTime(rs.getTimestamp("reference_time");
并将此日志返回给编写器,就像某些批处理进程那样。
这就是重点。该程序抛出SQLException! java.sql.SQLException:Column' account_login_log_id'没找到。
什么?我甚至没有找到专栏' account_login_log_id'在RowMapper代码中。 实际上,我可以通过用' log_id'替换ORDER BY子句中的列名来使它运行。但为什么?是什么原因?请尽可能多地做出任何记录。 (我怀疑查询中关键字的查询处理顺序。* ref:https://stackoverflow.com/a/31808872/3648833)
感谢。
答案 0 :(得分:1)
SELECT account_login_log_id log_id
您为该列添加了别名,因此现在它有一个新名称,您必须使用该新名称。
您的确切里程可能因RDBMS而异。