Eu estou usando Primavera-boot 0.5.0.M6 com a Primavera-Batch. Configuração tem usando @EnableBatchProcessing com fonte de dados, etc configurado em application.properties.
Durante a primeira execução do aplicativo, tudo funciona bem, mas depois que eu parar o aplicativo e reinicie o aplicativo, seguinte erro é visto
org.springframework.dao.DuplicateKeyException: PreparedStatementCallback; SQL [INSERT IGNORE into BATCH_JOB_INSTANCE(JOB_INSTANCE_ID, JOB_NAME, JOB_KEY, VERSION) values (?, ?, ?, ?)]; Duplicate entry '1' for key 'PRIMARY'; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'PRIMARY'
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:239)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:659)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:908)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:969)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:974)
Quando escavação para baixo, i tinha observado após linhas em toras
2013-12-06 12:12:37 INFO ResourceDatabasePopulator:162 - Executing SQL script from class path resource [org/springframework/batch/core/schema-mysql.sql]
2013-12-06 12:12:37 INFO ResourceDatabasePopulator:217 - Done executing SQL script from class path resource [org/springframework/batch/core/schema-mysql.sql] in 13 ms.
raiz do problema aqui foi pelo esquema drop-mysql.sql não foi desencadeada pelo esquema mysql.sql foi acionado, criando assim duas entradas na BATCH_JOB_SEQ.
Para a resolução do mesmo, eu adicionei
@EnableAutoConfiguration(exclude={BatchAutoConfiguration.class})
No entanto, devido a isso eu preciso para executar esquema mysql.sql explicitamente, que a partir de agora é ok, mas seria problema quando versão primavera-lote seria atualizado com as atualizações no esquema
Daí tem algumas perguntas: 1. Como autoconfigure lote, mesmo para executar esquema drop-mysql.sql antes esquema mysql.sql? 2. há maneira de configurar esta BatchDatabaseInitializer para executar tipo de modo de update?
Saudações













