2012-02-06 11 views
0

私はSpringバッチを扱っています。バッチはこのようなデータベースから毎回複数のレコードを読み込みますJavaのマージ期間

personId | fromDate | toDate | someCode

* 100 | 05-05-2011 | 31-12-2011 | A

* 100 | 01-01-2012 | 31-12-2012 | A

100 | 01-01-2013 | 03-03-2013 | B

101 | 05-05-2011 | 31-12-2011 | A

*マージする期間。

私がしたいのは、同じコードと同じpersonIdを持つが、異なるコードやpersonIdは持たないピリオドをマージすることです。

最初の質問は、私はこのステップをチャンクできますか?問題は、コミット間隔は静的で、私は人のためにすべてのプリオードを1つのチャンクに入れないかもしれないということです。ある人のレコード数に基づいてテーブルに動的チャンクを入れることは可能ですか?

次の質問は、期間をマージする最良の方法は何ですか? toDateが31-12で、次の期間が来年の01-01から始まる場合は、ピリオドをマージする必要があります。

+0

http://stackoverflow.com/questions/8837487/how-to-process-logically-related-rows-after-itemreader-in-springbatch –

答えて

0

私は各オブジェクトに2つのポインタを使用する問題を解決します。 1つは前の期間を指し、もう1つは次の期間を指す。 私は同じ人物IDを持つすべての行を読み込んで集計する必要がありました。