我正在使用Spring Batch从数据库中读取条目并相应地处理它们。到目前为止,我编写条目,将所有主键存储在列表中,并将此列表设置为Job的参数之一。这适用于小批量,但如果有100个条目,则列表变大以存储为参数。所以我打算存储一些排序或唯一字段,这些字段对于属于同一作业的所有条目都是通用的,并且只将此密钥作为参数传递,我以前考虑使用作业执行ID,但这是在作业启动后生成的当读者初始化时,它可能为时已晚。所以我有以下几种选择:
@GeneratedValue
注释完成,如果我错了请纠正我)我认为如果你解释为什么你可能更喜欢一种解决方案而不是另一种解决方案也是有益的。
答案 0 :(得分:0)
我通过在我的数据库中添加一个序列解决了这个问题,在我的配置中添加了以下bean:
<bean id="batchSequence" class="org.springframework.jdbc.support.incrementer.PostgreSQLSequenceMaxValueIncrementer">
<property name="dataSource" ref="dataSource" />
<property name="incrementerName" value="batch_id" />
</bean>
在必要时自动装配上面的bean,然后使用nextLongValue()
方法生成序列的增量并获取新的数字。