springboot2.x版本 多数据源整合问题 At least one JPA metamodel must be present!

配置多个数据源报错详情:

at cn.htd.qidian.server.bi.web.BiApplication.main(BiApplication.java:39)
Caused by: java.lang.IllegalArgumentException: At least one JPA metamodel must be present!
    at org.springframework.util.Assert.notEmpty(Assert.java:450)
    at org.springframework.data.jpa.mapping.JpaMetamodelMappingContext.<init>(JpaMetamodelMappingContext.java:55)
    at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean.java:80)
    at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean.java:44)
    at org.springframework.beans.factory.config.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:141)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1753)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1690)
    ... 16 common frames omitted

方案一:没有指定主数据源导致

参考:https://my.oschina.net/u/3535099/blog/3051119

package cn.htd.qidian.server.bi.common.datasource;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

/**
 * BI数据源配置
 */
@Configuration
@MapperScan(basePackages = "cn.htd.qidian.server.bi.dao.datasource.bi", sqlSessionTemplateRef = "biCenterSqlSessionTemplate")
public class BiDataSourceConfig {

    @Bean(name = "biCenterDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.bi")
    @Primary //自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
    public DataSource biCenterDataSource() {
        return DruidDataSourceBuilder.create().build();
    }

    @Bean(name = "biCenterSqlSessionFactory")
    @Primary//自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
    public SqlSessionFactory biCenterSqlSessionFactory(@Qualifier("biCenterDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

        bean.setDataSource(dataSource);

        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/bi/*.xml"));
        bean.setConfigLocation(new DefaultResourceLoader().getResource("classpath:mybatis/sqlMapConfig.xml"));

        return bean.getObject();
    }

    @Bean(name = "biCenterTransactionManager")
    @Primary//自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
    public DataSourceTransactionManager biCenterTransactionManager(@Qualifier("biCenterDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "biCenterSqlSessionTemplate")
    @Primary//自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
    public SqlSessionTemplate biCenterSqlSessionTemplate(@Qualifier("biCenterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

}

方案二:springboot启动类 加上 @EnableAutoConfiguration(exclude={JpaRepositoriesAutoConfiguration.class})

 

posted @ 2020-06-22 19:36  feibazhf  阅读(810)  评论(0编辑  收藏  举报