Les tables de métadonnées Spring Batch ne sont pas créées automatiquement?

Les tables de métadonnées Spring Batch ne sont pas créées automatiquement?

SijobRepository est créé avecMapJobRepositoryFactoryBean (métadonnées en mémoire), les jobs Spring batch s'exécutent avec succès.

spring-config.xml

  
    
  

Problème

Après avoir modifié lesjobRepository pour stocker les métadonnées dans la base de données:

spring-config.xml

  
    
    
    
  

  
    
  

  
    
    
    
    
  

Il demande que la tablebatch_job_instance n'existe pas? Pourquoi Spring n'a pas créé ces méta-tables automatiquement?

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table db.batch_job_instance' doesn't exist
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)

Solution

Les scripts de la meta table sont stockés dans lespring-batch.jar, vous devez le créer manuellement.

spring-batch-meta-data-tables

Normalement, vous pouvez automatiser la création du script de table via le fichier de configuration XML Spring. Par exemple,

spring-config.xml



  
  
    
    
    
    
  

  
  
    
    
  

Exécutez à nouveau vos travaux par lots Spring, ces méta-tables seront créées automatiquement.