Jdbc 提交间隔为2的Spring批处理将同一对象写入两次,并跳过另一个对象

Jdbc 提交间隔为2的Spring批处理将同一对象写入两次,并跳过另一个对象,jdbc,spring-batch,spring-jdbc,Jdbc,Spring Batch,Spring Jdbc,我使用Spring框架中的FlatFileItemReader和JdbcItemWriter将数据从文件批量写入Oracle数据库。 当我配置一个commit interval>1,比方说2时,读卡器从文件中读取两行,然后写卡器将第二行的数据写入数据库两次 我的配置如下: <batch:job id="Job"> <batch:step id="step"> <batch:tasklet> <batch:c

我使用Spring框架中的
FlatFileItemReader
JdbcItemWriter
将数据从文件批量写入Oracle数据库。 当我配置一个
commit interval
>1,比方说2时,读卡器从文件中读取两行,然后写卡器将第二行的数据写入数据库两次

我的配置如下:

<batch:job id="Job">
    <batch:step id="step">
        <batch:tasklet>
            <batch:chunk reader="Reader" writer="Writer"
                commit-interval="2" processor-transactional="false" />
        </batch:tasklet>
        <batch:fail on="FAILED" />
    </batch:step>
</batch:job>

<bean id="Reader" class="org.springframework.batch.item.file.FlatFileItemReader">
    <property name="linesToSkip" value="1" />
    <!-- TODO: FilePath definieren (Umgebungsabhängig) -->
    <property name="resource" value="file:in/Users_kurz.csv" />
    <property name="lineMapper">
        <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
            <property name="lineTokenizer">
                <bean
                    class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                    <property name="names" value="name1, name2, name3, name4" />
                    <property name="delimiter" value=";" />
                </bean>
            </property>
            <property name="fieldSetMapper">
                <bean
                    class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper">
                    <property name="prototypeBeanName" value="lineObject" />
                </bean>
            </property>
        </bean>
    </property>
</bean>
  <bean id="LineObject" class="this.is.my.LineObject" />

 <bean id="dcIdentityWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
    <property name="dataSource" ref="dataSource" />
    <property name="sql"
        value="INSERT INTO table(col1, col2, col3, col4)
   VALUES (:name1, name2, name3, name4)" />
    <property name="itemSqlParameterSourceProvider">
        <bean class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" />
    </property>
    </bean>



您是否可以发布一些java代码,例如读取文件数据的代码和将其写入数据库的代码?您需要显示
this.is.my.LineObject
code.this.is.my.LineObject类似于:公共类LineObject{private String name1;private String name2;+getter+setter}读取文件并写入数据库的代码是spring类FlatFileItemReader和JdbcBatchItemWriter