2017-01-26 4 views
0

У меня возникли проблемы с настройкой Spring на использование таблиц BATCH_ *, размещенных в MySQL. Я создал таблицы в соответствии с документами, однако, похоже, что код пытается получить порядковый номер, используя функцию аромата Oracle.Невозможно настроить SB для использования размещенных в MySQL таблиц BATCH_ * MySQL

Ошибки я получаю: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Неизвестный стол «BATCH_JOB_SEQ» в списке полей

Но это скрывает реальную проблему. Я отладил его и попытался запустить этот код:

select " + getIncrementerName() + ".nextval from dual"; 

Это, очевидно, диалект Oracle. Я заметил, что существует правильный инкрементор в моей среде здесь: 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> 

Кто-нибудь есть идеи, как это шоу пробка для нас атм

+0

пожалуйста, вы можете распечатать эту строку 'System.out.print (выберите«+ getIncrementerName() +».nextval от двойного ";); и показать нам результат? –

+0

Вы _sure_ вы создали таблицы BATCH_ * в соответствии с документацией MySQL здесь? https://github.com/spring-projects/spring-batch/blob/master/spring-batch-core/src/main/resources/org/springframework/batch/core/schema-mysql.sql Это ясно показывает BATCH_JOB_SEQ таблицу в качестве одной из таблиц, а также вставка в нее. –

ответ

2

Ну, хорошо, я действительно должен RTM немного больше ... вы просто должны сказать jobRepository боб, какой тип БД вы используете

<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>