Múltiples fuentes de datos y creación de esquemas en Spring Boot

Estoy usando Spring Boot. Finalmente logré configurar dos fuentes de datos, pero ahora estoy enfrentando otro problema.

con dos fuentes de datos en su lugarspring.jpa.hibernate.ddl-auto=create parece dejar de funcionar en mi aplicación de arranque de primavera, solospring.jpa.generate-ddl=true haz el trabajo ahora

No puedo lograr seleccionar la estrategia de creación automática para cada una de las fuentes de datos. Preferiría crear el esquema para la fuente de datos uno, y simplemente usar el esquema creado en la segunda base de datos con la fuente de datos dos.

¿Alguien tiene idea de cómo resolver alguno de estos problemas? Tenga en cuenta que no quiero tirar por completo la configuración automática si es posible. Ni siquiera sé si hibernate puede inicializar el esquema en una unidad de persistencia.

application.properties

spring.datasource-internal.url=jdbc:hsqldb:mem:testdb
spring.datasource-internal.username=sa
spring.datasource-internal.password=sa
spring.datasource-internal.driver-class-name=org.hsqldb.jdbcDriver
spring.datasource-internal.jpa.database-platform=org.hibernate.dialect.HSQLDialect

spring.datasource-external.url=jdbc:hsqldb:mem:testexternal
spring.datasource-external.username=sa
spring.datasource-external.password=sa
spring.datasource-external.driver-class-name=org.hsqldb.jdbcDriver
spring.datasource-external.jpa.database-platform=org.hibernate.dialect.HSQLDialect

flyway.enabled=false
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true

DBInternalConfig

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "cz.data.internal",
        entityManagerFactoryRef = "internalEntityManagerFactory",
        transactionManagerRef = "internalTransactionManager")
public class DBConfigInternal {


    public static final String INTERNAL = "internal";

    @Bean(name = "internalDataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource-internal")
    public DataSource internalDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "internalEntityManagerFactory")
    @Primary
    public LocalContainerEntityManagerFactoryBean internalEntityManagerFactory(
            EntityManagerFactoryBuilder builder) {
        return builder
                .dataSource(internalDataSource())
                .packages("cz.data.internal.entity")
                .persistenceUnit(INTERNAL)
                .build();
    }

    @Bean(name = "internalTransactionManager")
    @Primary
    public PlatformTransactionManager internalTransactionManager() {
        JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
        jpaTransactionManager.setDataSource(internalDataSource());
        jpaTransactionManager.setPersistenceUnitName(INTERNAL);
        return jpaTransactionManager;
    }
}

DBExternalConfig

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        basePackages = "cz.data.external",
        entityManagerFactoryRef = "externalEntityManagerFactory",
        transactionManagerRef = "externalTransactionManager")
public class DBConfigExternal {


    public static final String EXTERNAL = "external";

    @Bean(name = "externalDataSource")
    @ConfigurationProperties(prefix = "spring.datasource-external")
    public DataSource externalDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "externalEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean externalEntityManagerFactory(
            EntityManagerFactoryBuilder builder) {
        return builder
                .dataSource(externalDataSource())
                .packages("cz.data.external.entity")
                .persistenceUnit(EXTERNAL)
                .build();
    }

    @Bean(name = "externalTransactionManager")
    public PlatformTransactionManager externalTransactionManager() {
        JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
        jpaTransactionManager.setDataSource(externalDataSource());
        jpaTransactionManager.setPersistenceUnitName(EXTERNAL);
        return jpaTransactionManager;
    }
}

M.W.

Respuestas a la pregunta(1)

Su respuesta a la pregunta