当前位置:   article > 正文

springboot2.2 + jpa连接多个数据库以及出现的错误(已解决)_jpaproperties.gethibernateproperties(datasource);

jpaproperties.gethibernateproperties(datasource);

springboot2.2 + jpa连接多个数据库的步骤

  1. 在配置文件中添加数据的信息
  2. 数据源配置类
  3. jpa配置类
    注意:当只连接一个数据源的时候不需要写jpa配置,如果要连接多个数据源就要对每个数据源的jpa进行配置
    (步骤略)

错误1 @Qualifier报错 @EnableJpaRepositories中的basePackages报错

错误描述:在Jpa配置配置类中使用@Qualifier定位指定数据源报错,但是已经在数据源配置类中使用@Bean指定了数据源的名称
命名存在相应的目录,但是使用 @EnableJpaRepositories中的basePackages指定扫描包的时候报错

错误原因:该注解所在的配置类必须要和启动类WebApplication在同级或者更低级目录下,否则扫描不到。

解决方案:将配置类移到WebApplication同级目录下,错误解决

错误2 没有jpaProperties.getHibernateProperties(dataSource)方法

错误描述,在jpa配置类中配置Hibernate时,没有jpaProperties.getHibernateProperties(dataSource)方法

错误原因:jpaProperties.getHibernateProperties(dataSource)方法在2.0之前的版本中是可以使用的,之后的版本没有这个方法

解决方案:使用以下方法代替:

@Autowired
private JpaProperties jpaProperties;

@Autowired
private HibernateProperties hibernateProperties;

private Map<String, Object> getVendorProperties() {
    return hibernateProperties.determineHibernateProperties(
            jpaProperties.getProperties(),
            new HibernateSettings());
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

错误3 A bean with that name has already been defined in null and overriding is disabled!

错误描述:jpa仓库bean被多次创建了,提示说可以在配置类中添加这样的代码:
spring.main.allow-bean-definition-overriding=true
重新创建新的bean,覆盖掉之前的bean,但是这可能会造成数据丢失等问题。。。

错误原因: @EnableJpaRepositories该注解会为指定的扫描包下都创建一个bean
@Repository会为加了该注解的类创建一个bean,检查是否在扫描包下的类中也添加了@Repository注解,如果有,把@Repository注解删除就好了。如果删除之后还是报同样的错误,可以尝试打断点看bean的来源。双击shift打开DefaultListableBeanFactory 类,在抛出异常的位置打个断点:
在这里插入图片描述

发现在WebConfig类上也加了注解,扫描指定包并创建jpaRespository,把这个注解注释掉再运行就成功了
在这里插入图片描述

错误4 HiKariPool-1 - jdbcUrl is requrired with driverClassName

在这里插入图片描述

错误描述:线程池报错,说没有url

解决方案:配置数据源的时候,数据源路径写的是url spring.dataSource.数据源名称.url = 该数据源路径,但是HiKariPool不认url,把url换成jdbc-url就ok了

错误5 HiKariPool Communication link failure

在这里插入图片描述

错误描述:连不上数据库
错误原因:连不上数据库可能有以下这些原因:

  1. JDBC URL中的IP地址或主机名错误。
  2. 本地DNS服务器无法识别JDBC URL中的主机名。
  3. JDBC URL中的端口号丢失或错误。
  4. 数据库服务器已关闭。
  5. DB服务器不接受TCP / IP连接。
  6. 数据库服务器已用尽连接。
  7. Java和DB之间的某种事物正在阻止连接,例如防火墙或代理。
    解决方法:
  8. 使用验证并测试它们ping。
  9. 刷新DNS或在JDBC URL中使用IP地址。
  10. 验证基于my.cnfMySQL DB。
  11. 启动数据库。
  12. 验证mysqld是否在没有的情况下启动–skip-networking option。
  13. 重新启动数据库并相应地修复您的代码,使其关闭中的连接finally。
  14. 禁用防火墙和/或配置防火墙/代理以允许/转发端口。
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号