Java 无法将SB配置为使用MySQL托管的批处理表

Java 无法将SB配置为使用MySQL托管的批处理表,java,mysql,spring,jdbc,spring-batch,Java,Mysql,Spring,Jdbc,Spring Batch,我在配置Spring以使用MySQL托管的批处理表时遇到了一些问题。 我根据文档创建了表,但代码似乎试图使用Oracle Flavor函数获取序列号 我得到的错误是: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:字段列表中的未知表“批处理作业顺序” 但这掩盖了真正的问题。我调试了它并尝试运行以下代码: select " + getIncrementerName() + ".nextval from dual"; 这显然是甲

我在配置Spring以使用MySQL托管的批处理表时遇到了一些问题。 我根据文档创建了表,但代码似乎试图使用Oracle Flavor函数获取序列号

我得到的错误是: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:字段列表中的未知表“批处理作业顺序”

但这掩盖了真正的问题。我调试了它并尝试运行以下代码:

select " + getIncrementerName() + ".nextval from dual";
这显然是甲骨文方言。我注意到我的环境中存在正确的递增器: org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer

但是它的召唤 org.springframework.jdbc.support.incrementer.OracleMaxValueIncrementer

我已将数据源设置为:

 <bean id="springDataSource"
            class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          <property name="driverClassName" value="com.mysql.jdbc.Driver" />
          <property name="url" value="jdbc:mysql://10.252.205.5:3306/MASKNG" />
          <property name="username" value="MASKNG" />
          <property name="password" value="maskng" />
      </bean>

任何人都有一个想法,因为这是我们atm的一个表演障碍。好吧,好吧,我真的应该再做一点RTM…你只需要告诉jobRepository bean你正在使用什么类型的DB

<bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
    <property name="dataSource" ref="springDataSource" />
    <property name="transactionManager" ref="transactionManager" />
    <property name="validateTransactionState" value="${jobRepository.validationTransactionState:true}" />
    <property name="isolationLevelForCreate" value="${jobRepository.isolationLevelForCreate}" />
    <!-- <property name="databaseType" value="oracle" /> -->
    <property name="databaseType" value="mysql" />
    <property name="tablePrefix" value="BATCH_" />
    <property name="lobHandler" ref="lobHandler"/>
</bean>

好吧,好吧,我真的应该多做一点RTM…你只需要告诉jobRepository bean你正在使用什么类型的DB

<bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
    <property name="dataSource" ref="springDataSource" />
    <property name="transactionManager" ref="transactionManager" />
    <property name="validateTransactionState" value="${jobRepository.validationTransactionState:true}" />
    <property name="isolationLevelForCreate" value="${jobRepository.isolationLevelForCreate}" />
    <!-- <property name="databaseType" value="oracle" /> -->
    <property name="databaseType" value="mysql" />
    <property name="tablePrefix" value="BATCH_" />
    <property name="lobHandler" ref="lobHandler"/>
</bean>

你能用System.out.printselect+getIncrementerName+nextval从dual;打印这行吗;;并向我们展示结果?您确定您根据此处的MySQL文档创建了批处理表吗?这清楚地显示了BATCH_JOB_SEQ表作为其中一个表,其中还有一个insert。请使用System.out.printselect+getIncrementerName+.nextval from dual;打印这一行好吗;;并向我们展示结果?您确定您根据此处的MySQL文档创建了批处理表吗?这清楚地显示了BATCH_JOB_SEQ表作为其中一个表,并且在其中也有一个insert。