Spring boot多数据源,未找到H2表

Spring boot多数据源,未找到H2表,spring,spring-boot,spring-data,spring-data-jpa,Spring,Spring Boot,Spring Data,Spring Data Jpa,Spring启动时使用muiltiple数据源H2和Mysql,而不是在控制台中创建H2表。 访问h2表时出错,表示找不到表。 在检查控制台时,我可以确认表没有创建 我有两个数据源,一个是使用MySQL的IBMDemo,另一个是h2。实体类在相应的包中 THH2表是在删除自定义数据源配置并尝试自动配置时创建的,但MySQL表也是在H2数据库中创建的 我想在我的应用程序中使用这两种方法。 这些是属性 ## ibdemo proeprties app.datasource.ibdemo.url=jd

Spring启动时使用muiltiple数据源H2和Mysql,而不是在控制台中创建H2表。 访问h2表时出错,表示找不到表。 在检查控制台时,我可以确认表没有创建

我有两个数据源,一个是使用MySQL的IBMDemo,另一个是h2。实体类在相应的包中

THH2表是在删除自定义数据源配置并尝试自动配置时创建的,但MySQL表也是在H2数据库中创建的

我想在我的应用程序中使用这两种方法。 这些是属性

## ibdemo proeprties
app.datasource.ibdemo.url=jdbc:mysql://url
app.datasource.ibdemo.username=username
app.datasource.ibdemo.password=password
app.datasource.ibdemo.driver-class-name=com.mysql.jdbc.Driver

## H2 DB properties

spring.h2.console.enabled=true
app.datasource.h2.url=jdbc:h2:mem:testdb
app.datasource.h2.driver-class-name=org.h2.Driver
app.datasource.h2.username=sa
app.datasource.h2.password=
IBDemoDataSource

@Configuration
@EnableJpaRepositories(
        entityManagerFactoryRef = "ibDemoEntityManager",
        transactionManagerRef = "ibDemoTransactionManager",
        basePackages = {"com.cavion.demo.repositories"}
        )
public class IBDemoConfig {

@Bean(name = "ibDemoEntityManager")
@Primary
public LocalContainerEntityManagerFactoryBean getIBDemoEntityManager(EntityManagerFactoryBuilder builder,
        @Qualifier("ibDemoDataSource") DataSource ibDemoDataSource){

    return builder
            .dataSource(ibDemoDataSource)
            .packages("com.cavion.demo.entity")
            .persistenceUnit("ibdemo")
            .build();
}


@Bean("ibDemoDataSourceProperties")
@Primary
@ConfigurationProperties("app.datasource.ibdemo")
public DataSourceProperties ibDemoDataSourceProperties(){
    return new DataSourceProperties();
}


@Bean("ibDemoDataSource")
@Primary
@ConfigurationProperties("app.datasource.ibdemo")
public DataSource ibDemoDataSource(@Qualifier("ibDemoDataSourceProperties") DataSourceProperties ibDemoDataSourceProperties) {
    return ibDemoDataSourceProperties().initializeDataSourceBuilder().build();
}

@Bean(name = "ibDemoTransactionManager")
public JpaTransactionManager transactionManager(@Qualifier("ibDemoEntityManager") EntityManagerFactory ibDemoEntityManager){
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(ibDemoEntityManager);
    return transactionManager;
}
}


H2DataSource

@Configuration
@EnableJpaRepositories(
        entityManagerFactoryRef = "h2DemoEntityManager",
        transactionManagerRef = "h2DemoTransactionManager",
        basePackages = {"com.tfs.repository"}
        )
public class H2DemoConfig {

@Bean(name = "h2DemoEntityManager")
public LocalContainerEntityManagerFactoryBean getServersEntityManager(EntityManagerFactoryBuilder builder,
        @Qualifier("h2DemoDataSource") DataSource h2DemoDataSource){

    return builder
            .dataSource(h2DemoDataSource)
            .packages("com.tfs.entity")
            .persistenceUnit("h2demo")
            .build();
}


@Bean("h2DemoDataSourceProperties")
@ConfigurationProperties("app.datasource.h2")
public DataSourceProperties h2DemoDataSourceProperties(){
    return new DataSourceProperties();
}


@Bean("h2DemoDataSource")
@ConfigurationProperties("app.datasource.h2")
public DataSource h2DemoDataSource(@Qualifier("h2DemoDataSourceProperties") DataSourceProperties h2DemoDataSourceProperties) {
    return h2DemoDataSourceProperties().initializeDataSourceBuilder().build();
}

@Bean(name = "h2DemoTransactionManager")
public JpaTransactionManager transactionManager(@Qualifier("h2DemoEntityManager") EntityManagerFactory h2DemoEntityManager){
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(h2DemoEntityManager);
    return transactionManager;
}
}


**Main method**

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class,
    DataSourceTransactionManagerAutoConfiguration.class})
@EnableAsync
@EntityScan({"com.cavion.demo.entity","com.tfs.entity"})
@ComponentScan({"com.cavion.controller","com.cavion.service",
             "com.udemanager.service", "com.udemanager.controller", "com.udemanager.entity" ,"com.tfs.controller","com.tfs.service"})

@Import({IBDemoConfig.class, H2DemoConfig.class})

public class UdeManagerServiceApplication extends SpringBootServletInitializer {

}
日志似乎H2数据源仍在使用MySql5方言

2018-04-29 13:13:29.173  INFO 1888 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-04-29 13:13:29.173  INFO 1888 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2018-04-29 13:13:57.987  INFO 1888 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'ibdemo'
2018-04-29 13:13:57.987  INFO 1888 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
name: ibdemo
...]
2018-04-29 13:13:58.019  INFO 1888 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
2018-04-29 13:13:58.128  INFO 1888 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'ibdemo'
2018-04-29 13:13:58.347  INFO 1888 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'h2demo'
2018-04-29 13:13:58.347  INFO 1888 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
name: h2demo
...]
2018-04-29 13:13:58.394  INFO 1888 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
2018-04-29 13:13:58.440  INFO 1888 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'h2demo'
2018-04-29 13:13:58.550  INFO 1888 --- [  restartedMain] o.h.h.i.QueryTranslatorFactoryInitiator  : HHH000397: Using ASTQueryTranslatorFactory
2018-04-29 13:13:58.846  INFO 1888 --- [  restartedMain] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService

如何创建表?使用spring数据源? 如果在@SpringBootApplication中排除DataSourceAutoConfiguration.class,则不会发生数据库初始化


您可以查看org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration的代码。

我也遇到了同样的问题,您找到解决方案了吗?