Java 为什么我的存储库使用主实体管理器?

Java 为什么我的存储库使用主实体管理器?,java,spring-boot,spring-data-jpa,Java,Spring Boot,Spring Data Jpa,我一直在尝试通过几个定制查询实现将多个数据源与spring boot连接起来。当我调用这些定制查询时,会使用正确的实体管理器。然而,当我使用基本的CRUDEPository函数时,它会使用主管理器,并产生“非托管类型”错误 以下是我的两个配置源: @Configuration public class DataSourceConfig { @Bean(name="DB1") @Primary @ConfigurationProperties(prefix="spring

我一直在尝试通过几个定制查询实现将多个数据源与spring boot连接起来。当我调用这些定制查询时,会使用正确的实体管理器。然而,当我使用基本的CRUDEPository函数时,它会使用主管理器,并产生“非托管类型”错误

以下是我的两个配置源:

@Configuration
public class DataSourceConfig {

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

    @Primary
    @PersistenceContext(unitName = "primary")
    @Qualifier("entityManagerFactory")
    @Bean(name = "entityManagerFactory")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) {
        return builder.dataSource(primaryDataSource())
                .persistenceUnit("primary")
                .packages("com.company.monitoring.db.primary")
                .build();
    }

使用错误数据源的控制器中的Repo:

import com.company.monitoring.db.secondary.repository.FileAuditLogDAO;
...
@RequestMapping("/eventdetails/")
public class EventDetailsController {
...

    @Autowired
    private FileAuditLogDAO repository;
...
FileAuditLogDAO位于com.company.monitoring.db.secondary.repository包中 FileAuditLogEntity位于包com.company.monitoring.db.secondary.entity中


我知道主程序正在使用,因为当我将
“com.company.monitoring.db.secondary”
添加到主程序包时,我不再获得非托管类型:class com.company.monitoring.db.secondary.entity.FileAuditLogEntity。我在不同的地方尝试了@enableJPareposities,但没有成功。我在这里做错了什么?

从来没有这样做过,但好吧,您需要两个不同的EnableJpaRepositories注释,它们都应该指定其特定的basePackage[Classe]s及其entityManagerFactoryRef。您认为您在代码中的何处指定了
EventDetailsController
和/或
FileAuditLogDAO
应使用
Secondary EntityManager
?@Andreas我在实体管理器工厂的packages方法中指定时,包括存储库的包FileAuditLogDAO。但事实并非如此:要扫描@Entity注释的包的名称。它与spring数据jpa存储库无关。
import com.company.monitoring.db.secondary.repository.FileAuditLogDAO;
...
@RequestMapping("/eventdetails/")
public class EventDetailsController {
...

    @Autowired
    private FileAuditLogDAO repository;
...