Нежелательная пустая таблица, созданная в источнике данных - PullRequest
3 голосов
/ 21 февраля 2020

Когда я пытаюсь использовать несколько источников данных в своем приложении Spring Boot, каждый entityManager создает нежелательные таблицы из других источников данных. Как я могу это исправить? Вот соответствующий фрагмент моего кода:

dataSourceConfig. java

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef= "entityManagerFactory",
basePackages= {"com.wnp.customerinfo.customerinfo.customerrepository"},transactionManagerRef="transactionManager")
public class CustomerConfig {
    @Bean(name="datasource")
    @ConfigurationProperties(prefix="spring.customer.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }
    @Bean(name="entityManagerFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(EntityManagerFactoryBuilder builder,
            @Qualifier("datasource") DataSource dataSource) {
        Map<String,Object> properties = new HashMap<>();
        properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
        properties.put("hibernate.hbm2ddl.auto", "update");
        return builder.dataSource(dataSource).properties(properties)
                .packages("com.ecom.customerinfo.customerinfo.model").persistenceUnit("CustomerInfo").build();
    }
    @Bean(name="transactionManager")
    public PlatformTransactionManager transactionManager(@Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory) {
        return new JpaTransactionManager(entityManagerFactory);
    }
}

application.properties

spring.customer.datasource.jdbcUrl=jdbc:mysql://localhost:3306/customer_info_db_temp
spring.customer.datasource.username=root
spring.customer.datasource.password=
spring.prod.datasource.jdbcUrl=jdbc:mysql://localhost:3307/prod_info_db_temp
spring.prod.datasource.username=root
spring.prod.datasource.password=

1 Ответ

2 голосов
/ 21 февраля 2020

Конфигурация, которую вы использовали в классе, идеальна. Но если у вас есть все классы моделей в одном и том же пакете и вы даете один и тот же базовый пакет во всех классах конфигурации, он всегда будет создавать пустые таблицы во всех базах данных. Старайтесь хранить их в разных упаковках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...