0

データベースを 2 回読み取る必要があるジョブを作成する必要があります。

最初のクエリは 1 つのレコードのみを返し、このレコードをフラット ファイルのヘッダーとして送信する必要があります。
2 番目のクエリは、同じフラット ファイルに書き込む必要がある一連のレコードを返します。

そのためのコンポジットライターを作成しようとしましたが、その中で2つのflatFileItemWriterを提供し、両方のflatFileItemWriterに同じリソース名を設定しました。しかし、これはリソースが既に存在するというエラーになります。

誰でも私が従うべきアプローチを教えてもらえますか?

前もって感謝します。

4

2 に答える 2

1

と を使用して 2 つの異なるファイルに書き込みFlatFileItemWriter、3 番目のステップでファイルを追加します。

于 2011-05-23T20:37:57.437 に答える
0

一連のレコードを返す 2 番目のクエリを考慮して Bean を作成します。ヘッダー部分については、FlatFileHeaderCallbackをプロパティとして FlatFileItemWriter に渡し、そこでヘッダー レコードを取得します。

public class MyFileHeaderCallback implements FlatFileHeaderCallback {
    @Override
    public void writeHeader(Writer writer) throws IOException {
        writer.write("#I have this line from a query");
    }
}

<bean id="headerCallback" class="com.file.MyFileHeaderCallback" />

<bean id="productItemWriter" class="org.*.file.FlatFileItemWriter">
<property name="headerCallback" ref="headerCallback" />
<!-- other necessary methods for your Writer -->
</bean>
于 2012-07-14T17:11:56.930 に答える