gpt4 book ai didi

java - 在数据源中创建不需要的空表

转载 作者:行者123 更新时间:2023-12-02 14:37:01 25 4
gpt4 key购买 nike

当我尝试在 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=

最佳答案

您在类里面使用的配置非常完美。但是,如果您将所有模型类放在同一个包中,并在所有配置类中提供相同的基础包,那么它将始终在所有数据库中创建空表。尝试将它们放在不同的包中。

关于java - 在数据源中创建不需要的空表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60329192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com