Spring Batch JdbcPagingItemReader seems not paginating

回眸只為那壹抹淺笑 提交于 2019-12-06 16:53:11

Following Hansjoerg Wingeier's suggestions I decided to use a JdbcCursorItemReader and solved the UncategorizedSQLException by setting verifyCursorPosition=false as described here.

This is the final configuration for JdbcCursorItemReader:

<bean id="jdbcCursorItemReader" class="org.springframework.batch.item.database.JdbcCursorItemReader" scope="step">
        <property name="dataSource" ref="dataSource" />
        <property name="sql">
            <value>
                        <![CDATA[
                            select
                                SAMPLE.ID, SAMPLE.PARENT_SAMPLE_ID, SAMPLE.MATERIAL_TYPE, SAMPLE.CONTAINER, SAMPLE.STORAGE_TEMPERATURE, SAMPLE.SAMPLED_TIME, SAMPLE.ANATOMICAL_SITE_ONTOLOGY, SAMPLE.ANATOMICAL_SITE_VERSION, SAMPLE.ANATOMICAL_SITE_CODE, SAMPLE.ANATOMICAL_SITE_DESCRIPTION, SAMPLE.ONTOLOGY_ONTOLOGY, SAMPLE.ONTOLOGY_VERSION, SAMPLE.ONTOLOGY_CODE, SAMPLE.ONTOLOGY_DESCRIPTION, SAMPLE.ONTOLOGY_FREE_TEXT, SAMPLE.SEX, SAMPLE.AGE_LOW, SAMPLE.AGE_HIGH, SAMPLE.AGE_UNIT,
                                BIOBANK.ID AS BIOBANK_ID, BIOBANK.ACRONYM, BIOBANK.NAME, BIOBANK.URL, BIOBANK.JURISTIC_PERSON, BIOBANK.COUNTRY AS BIOBANK_COUNTRY, BIOBANK.DESCRIPTION,
                                BB_CI.ID AS BB_CI_ID, BB_CI.FIRST_NAME AS BB_CI_FIRST_NAME, BB_CI.LAST_NAME AS BB_CI_LAST_NAME, BB_CI.PHONE AS BB_CI_PHONE, BB_CI.EMAIL AS BB_CI_EMAIL, BB_CI.ADDRESS AS BB_CI_ADDRESS, BB_CI.ZIP AS BB_CI_ZIP, BB_CI.CITY AS BB_CI_CITY, BB_CI.COUNTRY AS BB_CI_COUNTRY,
                                STUDY.ID AS STUDY_ID, STUDY.NAME AS STUDY_NAME, STUDY.DESCRIPTION AS STUDY_DESCRIPTION, STUDY.STUDY_DESIGN AS STUDY_STUDY_DESIGN, STUDY.DATA_CATEGORY AS STUDY_DATA_CATEGORY, STUDY.TOTAL_NUMBER_OF_PARTICIPANTS, STUDY.TOTAL_NUMBER_OF_DONORS, STUDY.INCLUSION_CRITERIA, STUDY.PRINCIPAL_INVESTIGATOR,
                                S_CI.ID AS S_CI_ID, S_CI.FIRST_NAME AS S_CI_FIRST_NAME, S_CI.LAST_NAME AS S_CI_LAST_NAME, S_CI.PHONE AS S_CI_PHONE, S_CI.EMAIL AS S_CI_EMAIL, S_CI.ADDRESS AS S_CI_ADDRESS, S_CI.ZIP AS S_CI_ZIP, S_CI.CITY AS S_CI_CITY, S_CI.COUNTRY AS S_CI_COUNTRY,
                                SAMPLE_COLLECTION.ID AS SAMPLE_COLLECTION_ID, SAMPLE_COLLECTION.ACRONYM AS SAMPLE_COLLECTION_ACRONYM, SAMPLE_COLLECTION.NAME AS SAMPLE_COLLECTION_NAME, SAMPLE_COLLECTION.DESCRIPTION AS SAMPLE_COLLECTION_DESCRIPTION, SAMPLE_COLLECTION.DATA_CATEGORY AS SAMPLE_COLLECTION_DATA_CATEGORY, SAMPLE_COLLECTION.COLLECTION_TYPE AS SAMPLE_COLLECTION_COLLECTION_TYPE,
                                SC_CI.ID AS SC_CI_ID, SC_CI.FIRST_NAME AS SC_CI_FIRST_NAME, SC_CI.LAST_NAME AS SC_CI_LAST_NAME, SC_CI.PHONE AS SC_CI_PHONE, SC_CI.EMAIL AS SC_CI_EMAIL, SC_CI.ADDRESS AS SC_CI_ADDRESS, SC_CI.ZIP AS SC_CI_ZIP, SC_CI.CITY AS SC_CI_CITY, SC_CI.COUNTRY AS SC_CI_COUNTRY

                            from
                                SAMPLE
                                LEFT JOIN BIOBANK ON SAMPLE.BIOBANK = BIOBANK.ID
                                LEFT JOIN CONTACT_INFORMATION AS BB_CI ON BIOBANK.CONTACT_INFORMATION = BB_CI.ID
                                LEFT JOIN STUDY ON SAMPLE.STUDY = STUDY.ID
                                LEFT JOIN CONTACT_INFORMATION AS S_CI ON STUDY.CONTACT_INFORMATION = S_CI.ID
                                LEFT JOIN SAMPLE_COLLECTION ON SAMPLE.SAMPLE_COLLECTION = SAMPLE_COLLECTION.ID 
                                LEFT JOIN CONTACT_INFORMATION AS SC_CI ON SAMPLE_COLLECTION.CONTACT_INFORMATION = SC_CI.ID

                            order by SAMPLE.ID
                        ]]>
                    </value>
        </property>
        <property name="rowMapper">
            <bean class="org.miabis.converter.batch.database.SampleRowMapper" />
        </property>
        <property name="verifyCursorPosition" value="false"/>
    </bean>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!