在春季批处理中,JdbcCursorItemReader
处理ResultSet
为TYPE_FORWARD_ONLY
。
在我的情况下,我需要将光标指向1行,因此我想设置TYPE_SCROLL_SENSITIVE
,以便我可以返回。
知道如何在春季批次或某些解决方法中做到这一点?
<bean id="databaseItemReader"
class="org.springframework.batch.item.database.JdbcCursorItemReader">
<property name="dataSource" ref="dataSource" />
<property name="sql"
value="select * from document udd, field uff where uff.docid = udd.docid AND uff.field_name IN ('address','contractNb','city','locale','login','mobile','name','phone') ORDER BY udd.docid, uff.field_name ASC" />
<property name="rowMapper">
<bean class="com.migration.springbatch.UDocumentResultRowMapper" />
</property>
<property name="verifyCursorPosition" value="false"/>
</bean>
答案 0 :(得分:1)
Spring Batch中ItemReader
的合同只是转发,JdbcCursorItemReader
是根据此合同实现的(因此TYPE_FORWARD_ONLY
)。因此,一旦打开光标就无法将光标倒回。
也就是说,当底层资源是事务性的(例如数据库或JMS队列)时,调用read可能会在回滚场景中的后续调用中返回相同的逻辑项。
请在此处的文档中找到更多详细信息:https://docs.spring.io/spring-batch/4.0.x/reference/html/readersAndWriters.html#itemReader