没有类型为'的合格bean;java.util.Set<;javax.persistence.EntityManager>';弹簧靴2.0.2

没有类型为'的合格bean;java.util.Set<;javax.persistence.EntityManager>';弹簧靴2.0.2,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个使用hibernate的SpringBootWeb应用程序,在1.5.7.0版本上运行良好。我决定升级到2.0.2 我所要做的就是修改SpringBootServletInitializer的位置。但是,当我部署到tomcat时,会出现以下错误: Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jpaContext': U

我有一个使用hibernate的SpringBootWeb应用程序,在1.5.7.0版本上运行良好。我决定升级到2.0.2

我所要做的就是修改SpringBootServletInitializer的位置。但是,当我部署到tomcat时,会出现以下错误:

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jpaContext': Unsatisfied dependency expressed through constructor parameter 0; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.util.Set<javax.persistence.EntityManager>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
原因:org.springframework.beans.factory.unsatifiedpendencyException:创建名为“jpaContext”的bean时出错:通过构造函数参数0表示的未满足的依赖关系;嵌套异常是
org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型为“java.util.Set”的符合条件的bean可用:至少需要1个符合autowire候选条件的bean。依赖项批注:{}
在我的属性文件或其他代码中没有区别。我只需在POM中更改spring版本,就得到了错误。以下是我的连接配置:

@Configuration
public class ConnectionsConfiguration implements ApplicationListener<ApplicationReadyEvent> {

static final Logger logger = LoggerFactory.getLogger(ConnectionsConfiguration.class);

@Autowired
DataSource dataSource;
@Autowired
private EntityManagerFactory emFactory;

@Bean
@Scope("prototype")
public LocalSessionFactoryBean sessionFactory() throws ClassNotFoundException {
    LocalSessionFactoryBean fact = new LocalSessionFactoryBean();
    fact.setAnnotatedPackages("com.****.persistence.model");
    fact.setPackagesToScan("com.****.persistence.model");
    fact.setDataSource(dataSource);
    return fact;
}

}
@配置
公共类ConnectionConfiguration实现ApplicationListener{
静态最终记录器记录器=LoggerFactory.getLogger(ConnectionsConfiguration.class);
@自动连线
数据源数据源;
@自动连线
私营实体管理工厂;
@豆子
@范围(“原型”)
公共LocalSessionFactoryBean sessionFactory()引发ClassNotFoundException{
LocalSessionFactoryBean事实=新的LocalSessionFactoryBean();
setAnnotatedPackages(“com.***.persistence.model”);
setPackagesToScan(“com.***.persistence.model”);
事实。setDataSource(数据源);
返回事实;
}
}

造成此错误的1.5.7和2.0.2之间有什么区别?我如何修复它?

不确定幕后的区别是什么,但EntityManager factory的自动连线仍然有效,但从该工厂获取EntityManager不再是默认设置。添加bean定义可以解决如下问题:

@Bean
public EntityManager getEntityManager() {
    return emFactory.createEntityManager();
} 
相对简单