背景
- 在使用SpringBoot配置多數據源時,找到了很多大牛的資料,結果在使用jpaProperties.getHibernateProperties()時一直報錯。 很多資料寫法如下,可是我這里就行不通
-
@Primary @Bean(name = "entityManagerFactoryPrimary") public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(EntityManagerFactoryBuilder builder) { return builder .dataSource(primaryDataSource)// 設置數據源 .properties(jpaProperties.getProperties())// 設置jpa配置 .properties(getVendorProperties())// 設置hibernate配置 .packages("com.xxxx.xxxxxx.xxxxxx.xxxxx.entities.superviser") //設置實體類所在位置 .persistenceUnit("primaryPersistenceUnit")// 設置持久化單元名,用於@PersistenceContext注解獲取EntityManager時指定數據源 .build(); } private Map getVendorProperties() { return jpaProperties.getHibernateProperties(new HibernateSettings()); }
原因
- 我使用的SpringBoot版本是2.2.1 RELEASE 版本,這個getHibernateProperties()方法已經被PASS掉了。
解決辦法
- 曲線救國,使用如下代碼即可
-
@Primary @Bean(name = "entityManagerFactoryPrimary") public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(EntityManagerFactoryBuilder builder) { return builder .dataSource(primaryDataSource)// 設置數據源 .properties(jpaProperties.getProperties())// 設置jpa配置 .properties(getVendorProperties())// 設置hibernate配置 .packages("com.canaan.superviser.objects.rpc.entities.superviser") //設置實體類所在位置 .persistenceUnit("primaryPersistenceUnit")// 設置持久化單元名,用於@PersistenceContext注解獲取EntityManager時指定數據源 .build(); } private Map getVendorProperties() { return hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(), new HibernateSettings()); // return jpaProperties.getHibernateProperties(new HibernateSettings()); }
-
