簡體   English   中英

如何在春季批處理項目閱讀器中執行連接查詢

[英]How to execute join query in spring batch item reader

我已經創建了從數據庫中獲取數據並將它們寫入 csv 文件的程序,但是當我的查詢正常並且當我在 sql 控制台中運行它時,我無法執行 sql join query inline jdbcCursorItemReader.setSql()我在春季批處理中運行此查詢,但未找到列“id”。 錯誤

我的查詢是:

SELECT iad.order_id, tb.mch_order_id, iad.transaction_time, iad.pay_amount, iad.fee_rate, iad.net_amount
FROM ibg_account_detail iad INNER JOIN ibg_account ia ON iad.ibg_account_id = ia.id
INNER JOIN ibg_settlement is2 ON ia.ibg_settlement_id = is2.id
INNER JOIN tb_bill tb ON iad.order_id = tb.order_id
WHERE is2.created_date >= '2022-05-20 00:00:00' AND is2.created_date <= '2022-05-20 23:59:59'
AND ia.account = '15088888888';

我的 ItemReader 功能是:

public JdbcCursorItemReader<IbgAccountDetailEntity> jdbcCursorItemReader(){
        JdbcCursorItemReader<IbgAccountDetailEntity> jdbcCursorItemReader = new JdbcCursorItemReader<>();
        jdbcCursorItemReader.setDataSource(dataSource);
        jdbcCursorItemReader.setSql(GetEntityFromQuery.SELECT_FILTER_QUERY);
        jdbcCursorItemReader.setRowMapper(mapper);
        return jdbcCursorItemReader;
    }

這是我的映射器:

public IbgAccountDetailEntity mapRow(ResultSet resultSet, int rowNum) throws SQLException {
        IbgAccountDetailEntity ibgAccountDetail = new IbgAccountDetailEntity();
        ibgAccountDetail.setId(resultSet.getLong("id"));
        ibgAccountDetail.setOrderId(resultSet.getString("order_id"));
        ibgAccountDetail.setTransactionTime(resultSet.getTimestamp("transaction_time"));
        ibgAccountDetail.setPayAmount(resultSet.getBigDecimal("pay_amount"));
        ibgAccountDetail.setFeeRate(resultSet.getBigDecimal("fee_rate"));
        ibgAccountDetail.setNetAmount(resultSet.getBigDecimal("net_amount"));

        return ibgAccountDetail;
    }

在我的映射器中,我應該有其他表中的其他列加入我該怎么做呢?

你在這里得到一個名為 id 的列:

ibgAccountDetail.setId(resultSet.getLong("id"));

但是您的 SQL 查詢不會返回具有此名稱的列:

SELECT iad.order_id, tb.mch_order_id, iad.transaction_time, iad.pay_amount, iad.fee_rate, iad.net_amount

結果集中沒有名為 id 的列嘗試將查詢更改為:

SELECT ia.id, iad.order_id, tb.mch_order_id, iad.transaction_time, iad.pay_amount, iad.fee_rate, iad.net_amount

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM