Spring batch 使用Spring Boot自动连接具有jpa和非jpa特性的多个数据源

Spring batch 使用Spring Boot自动连接具有jpa和非jpa特性的多个数据源,spring-batch,spring-data-jpa,spring-jdbc,spring-boot,Spring Batch,Spring Data Jpa,Spring Jdbc,Spring Boot,我有两个数据库配置javaconfig类——一个用于JPA,带有transactionManager()和entityManagerFactory()@Bean方法,另一个用于非JPA基于JDBCTemplate的查询提交,以访问该数据库中的数据。总体思路是使用JDBCTemplate读取数据,并在转换后将数据持久化到基于JPA的数据源中。我使用SpringBoot来启用自动配置。我的测试失败,原因是: java.lang.IllegalArgumentException: Not an

我有两个数据库配置javaconfig类——一个用于JPA,带有transactionManager()和entityManagerFactory()@Bean方法,另一个用于非JPA基于JDBCTemplate的查询提交,以访问该数据库中的数据。总体思路是使用JDBCTemplate读取数据,并在转换后将数据持久化到基于JPA的数据源中。我使用SpringBoot来启用自动配置。我的测试失败,原因是:

    java.lang.IllegalArgumentException: Not an managed type: 
我的
build.gradle
中既有
springbootstarterjdbc
又有
springbootstarterdatajpa
。我的直觉是,这两个数据源正处于相互冲突的过程中。对于我前面提到的两个用例,一个用于JPA,另一个用于JDBCTemplate,我如何强制使用这些数据源中的每一个

详细信息(在Dave回复后添加):

我的服务类用
@service
注释,我的存储库类用
@repository
注释。服务使用
@Autowired
使用存储库对象,尽管有些服务是基于JDBCTemplate进行数据检索的


对我的环境更复杂的描述如下(逻辑上):
JDBCTemplate(数据源(数据库(DB2))
-->
Spring批处理项目阅读器;处理器;编写器-->服务(存储库(JPADataSource(数据库(H2)))
。Spring批处理项目处理器使用服务连接到两个数据库。对于springbatch,我使用H2作业repo数据库(远程)来保存作业执行细节。这有意义吗?对于Spring批处理,我使用的是
de.codecentric:Spring boot starter批处理web:1.0.0.RELEASE
。在通过
entityManagerFactory
bean not found errors之后,我想控制上述组件的布线。

我认为这与数据源无关。日志显示,您拥有一个JPA存储库,该存储库的类型不是
@实体
。默认情况下,将从您定义的包
@EnableAutoConfiguration
中自动扫描存储库。因此,控制它的一种方法是将具有该注释的类移动到另一个包中。在Boot1.1中,如果您不想扫描,还可以设置“spring.data.jpa.repositories.enabled=false”来关闭扫描。或者您也可以正常使用
@EnableJpaRepositories

不幸的是,当我尝试按建议关闭扫描时,我得到的
嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型为repository的合格bean
。如果不查看所有代码,就不可能解释随机的单行日志语句。如果您需要存储库,为什么要禁用它们?也许你需要共享一个项目。我将把你添加到我的github合作者中。你的github用户名是什么?我已将dsyer添加到我的repo中:我可以看到代码。您有Spring数据存储库和实体,但我可以看到您正在手动配置
LocalContainerEntityManagerFactoryBean
(以及引导可以为您做的其他事情),并且您正在注入一个“entitymanager.packages.to.scan”,它不指向包含任何
@Entity
类的包。