春のバッチジョブリポジトリテーブルが設定され、スキーマIに作成取得されていません

Amriou:

私は同様の問題を取得しています。Iは、主バネバッチで使用されるべき第2のデータソースを有しています。春のバッチがプライマリデータソースのスキーマを作成し、挿入しようとしている/ここ秒での更新は私のコードです:

excetionは:java.sql.SQLSyntaxErrorException:文のBATCH_JOB_INSTANCE [SELECT JOB_INSTANCE_ID、BATCH_JOB_INSTANCE JOB_NAME =からJOB_NAME:ユーザーが権限またはオブジェクトが見つからないが欠けていますか?そしてJOB_KEY =?]

public class DataSourceConfig {
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSourceProperties primaryDataSourceProperties() {
    return new DataSourceProperties();
}

@Bean("secondDataSourceProperties")
@ConfigurationProperties("spring.second-datasource")
public DataSourceProperties secondDataSourceProperties() {
    return new DataSourceProperties();
}

/**
 * Create primary (default) DataSource.
 */
@Bean
@Primary
public DataSource primaryDataSource(@Autowired DataSourceProperties props) {
    return props.initializeDataSourceBuilder().build();
}

/**
 * Create second DataSource and named "secondDatasource".
 */
@Bean("secondDatasource")
public DataSource secondDataSource(@Autowired 
@Qualifier("secondDataSourceProperties") DataSourceProperties props) {
    return props.initializeDataSourceBuilder().build();
}
}

そして

@Component
@Configuration
public class MyBatchConfigurer extends DefaultBatchConfigurer {

/**
 * Initialize the BatchConfigurer to use the datasource of your choosing
 *
 * @param secondDatasource
 */

@Autowired
@Qualifier("secondDatasource")
DataSource datasource;

@Override
protected JobRepository createJobRepository() throws Exception {
    JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
    factory.setDataSource(datasource);
    factory.setTransactionManager(transactionManager());
    factory.afterPropertiesSet();

    return factory.getObject();
}

private PlatformTransactionManager transactionManager() {
    return new DataSourceTransactionManager(datasource);
}
}
Amriou:

これは、私はそれが私がちょうど2番目のデータソースが注入されているBeanを追加動作させるために何をしたかです。

@Bean
BatchConfigurer configurer(@Autowired @Qualifier("secondDatasource") DataSource dataSource) {
    return new DefaultBatchConfigurer(dataSource);
}

それでもスキーマが作成され、私は使用されませんでした。

@Configuration
@Profile({"dev","prod"})
public class JobRepositorySchemaConfig {
private final String JOB_REPO_SCHEMA = "classpath:batch_repo_schema.sql";

@Autowired
@Qualifier("secondDatasource")
DataSource datasource;

@Autowired
WebApplicationContext webApplicationContext;

@PostConstruct
public void loadIfInMemory() throws Exception {
    Resource resource = webApplicationContext.getResource("classpath:/org/springframework/batch/core/schema-drop-hsqldb.sql");
    Resource resource2 = webApplicationContext.getResource("classpath:/org/springframework/batch/core/schema-hsqldb.sql");
    ScriptUtils.executeSqlScript(datasource.getConnection(), resource);
    ScriptUtils.executeSqlScript(datasource.getConnection(), resource2);
}

}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=362799&siteId=1