Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring jpa-can';不要使用多个EntityManagerFactory_Java_Hibernate_Spring Mvc_Jpa_Entitymanager - Fatal编程技术网

Java Spring jpa-can';不要使用多个EntityManagerFactory

Java Spring jpa-can';不要使用多个EntityManagerFactory,java,hibernate,spring-mvc,jpa,entitymanager,Java,Hibernate,Spring Mvc,Jpa,Entitymanager,我正在开发一个JavaSpringMVC应用程序,它使用hibernate和jpa作为持久层。我有2个数据库,我想映射数据库1中的一些实体表和数据库2中的一些实体表。因此,我定义了如下两个配置类: 第一名: @Configuration @EnableTransactionManagement @EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFact

我正在开发一个JavaSpringMVC应用程序,它使用hibernate和jpa作为持久层。我有2个数据库,我想映射数据库1中的一些实体表和数据库2中的一些实体表。因此,我定义了如下两个配置类:

第一名:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
    }

    @Primary
    @Bean(name = "commonEntityManagerFactory")
    public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("common");
        factory.setDataSource(commonDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "commonDataSource")
    public DataSource commonDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "commonTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("profile");
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }

Properties additionalProperties() {
    return new Properties() {
        {  
            setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
            setProperty("hibernate.hbm2ddl.auto", "update");
            setProperty("hibernate.show_sql", "true");
            setProperty("hibernate.enable_lazy_load_no_trans", "true");
            setProperty("hibernate.connection.CharSet", "utf8");
            setProperty("hibernate.connection.characterEncoding", "utf8");
            setProperty("hibernate.connection.useUnicode", "true");
        }
    };
}

@Primary
@Bean(name = "commonEntityManagerFactory")
@Qualifier(value="commonEntityManager")
public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setDataSource(commonDataSource());
    factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setGenerateDdl(Boolean.TRUE);
    vendorAdapter.setShowSql(Boolean.TRUE);
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setJpaProperties(additionalProperties());

    factory.afterPropertiesSet();
    return factory.getObject();
}


@Primary
@Bean(name = "commonDataSource")
public DataSource commonDataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
    dataSource.setUsername("fpuser");
    dataSource.setPassword("fpdb$123456");

    return dataSource;
}

@Primary
@Bean(name = "commonTransactionManager")
public PlatformTransactionManager commonTransactionManager() {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
       transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
    return transactionManager;
}

@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
    return new PersistenceExceptionTranslationPostProcessor();
}
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    @Qualifier(value="profileEntityManager")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }
}
@Autowired
@Qualifier(value="profileEntityManager")
protected EntityManager entityManager;

@Override
public EntityManager getEntityManager() {
    return entityManager;
}
秒:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
    }

    @Primary
    @Bean(name = "commonEntityManagerFactory")
    public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("common");
        factory.setDataSource(commonDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "commonDataSource")
    public DataSource commonDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "commonTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("profile");
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }

Properties additionalProperties() {
    return new Properties() {
        {  
            setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
            setProperty("hibernate.hbm2ddl.auto", "update");
            setProperty("hibernate.show_sql", "true");
            setProperty("hibernate.enable_lazy_load_no_trans", "true");
            setProperty("hibernate.connection.CharSet", "utf8");
            setProperty("hibernate.connection.characterEncoding", "utf8");
            setProperty("hibernate.connection.useUnicode", "true");
        }
    };
}

@Primary
@Bean(name = "commonEntityManagerFactory")
@Qualifier(value="commonEntityManager")
public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setDataSource(commonDataSource());
    factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setGenerateDdl(Boolean.TRUE);
    vendorAdapter.setShowSql(Boolean.TRUE);
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setJpaProperties(additionalProperties());

    factory.afterPropertiesSet();
    return factory.getObject();
}


@Primary
@Bean(name = "commonDataSource")
public DataSource commonDataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
    dataSource.setUsername("fpuser");
    dataSource.setPassword("fpdb$123456");

    return dataSource;
}

@Primary
@Bean(name = "commonTransactionManager")
public PlatformTransactionManager commonTransactionManager() {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
       transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
    return transactionManager;
}

@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
    return new PersistenceExceptionTranslationPostProcessor();
}
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    @Qualifier(value="profileEntityManager")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }
}
@Autowired
@Qualifier(value="profileEntityManager")
protected EntityManager entityManager;

@Override
public EntityManager getEntityManager() {
    return entityManager;
}
注意,这两个文件中的所有内容都相似,只是第二个文件中的
common
已转换为
profile
,数据库名称和ip已更改。在DAO中,我还提出了以下内容:

@PersistenceContext(unitName = "common") //or "profile"
protected EntityManager entityManager;

@Override
public EntityManager getEntityManager() {
    return entityManager;
}
现在,当我运行项目时,我得到以下异常:

 org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory] is defined: expected single matching bean but found 2: commonEntityManagerFactory,profileEntityManagerFactory

我已经在这个例外中呆了两天了。谁能帮我解决这个问题。谢谢您的时间。

不确定它是否对您有帮助,但请尝试将
commonEntityManagerFactory()
profileEntityManagerFactory()
的返回值从
EntityManagerFactory
更改为
LocalContainerEntityManagerFactoryBean
,并返回这些工厂实例,而不是
factory.getObject()
。这是我目前项目中的一些东西,它工作得很好


另一个猜测:您使用哪个Spring框架版本?问题是,最近Spring框架中出现了一个与您的问题相关的回归。看一看,举个例子。回归系数为4.1.4。如果您确信您的配置是正确的,请尝试使用不同的Spring版本。希望这有帮助

不确定它是否对您有帮助,但请尝试将
commonEntityManagerFactory()
profileEntityManagerFactory()
的返回值从
EntityManagerFactory
更改为
LocalContainerEntityManagerFactoryBean
,并返回这些工厂实例,而不是
factory.getObject()
。这是我目前项目中的一些东西,它工作得很好


另一个猜测:您使用哪个Spring框架版本?问题是,最近Spring框架中出现了一个与您的问题相关的回归。看一看,举个例子。回归系数为4.1.4。如果您确信您的配置是正确的,请尝试使用不同的Spring版本。希望这对您有所帮助

您没有将
“common”
定义为一个单元名,并且您有两个
@Primary
注释。 尝试配置:
@Bean(name=“common”)
而不是
@Bean(name=“commonEntityManagerFactory”)

您没有将
“common”
定义为一个unitName,并且您有两个
@Primary
注释。 尝试配置:
@Bean(name=“common”)
而不是
@Bean(name=“commonEntityManagerFactory”)

因为它是Spring Jpa配置,所以您可能需要这样做:

第一名:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
    }

    @Primary
    @Bean(name = "commonEntityManagerFactory")
    public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("common");
        factory.setDataSource(commonDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "commonDataSource")
    public DataSource commonDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "commonTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("profile");
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }

Properties additionalProperties() {
    return new Properties() {
        {  
            setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
            setProperty("hibernate.hbm2ddl.auto", "update");
            setProperty("hibernate.show_sql", "true");
            setProperty("hibernate.enable_lazy_load_no_trans", "true");
            setProperty("hibernate.connection.CharSet", "utf8");
            setProperty("hibernate.connection.characterEncoding", "utf8");
            setProperty("hibernate.connection.useUnicode", "true");
        }
    };
}

@Primary
@Bean(name = "commonEntityManagerFactory")
@Qualifier(value="commonEntityManager")
public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setDataSource(commonDataSource());
    factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setGenerateDdl(Boolean.TRUE);
    vendorAdapter.setShowSql(Boolean.TRUE);
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setJpaProperties(additionalProperties());

    factory.afterPropertiesSet();
    return factory.getObject();
}


@Primary
@Bean(name = "commonDataSource")
public DataSource commonDataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
    dataSource.setUsername("fpuser");
    dataSource.setPassword("fpdb$123456");

    return dataSource;
}

@Primary
@Bean(name = "commonTransactionManager")
public PlatformTransactionManager commonTransactionManager() {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
       transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
    return transactionManager;
}

@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
    return new PersistenceExceptionTranslationPostProcessor();
}
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    @Qualifier(value="profileEntityManager")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }
}
@Autowired
@Qualifier(value="profileEntityManager")
protected EntityManager entityManager;

@Override
public EntityManager getEntityManager() {
    return entityManager;
}
秒:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
    }

    @Primary
    @Bean(name = "commonEntityManagerFactory")
    public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("common");
        factory.setDataSource(commonDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "commonDataSource")
    public DataSource commonDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "commonTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("profile");
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }

Properties additionalProperties() {
    return new Properties() {
        {  
            setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
            setProperty("hibernate.hbm2ddl.auto", "update");
            setProperty("hibernate.show_sql", "true");
            setProperty("hibernate.enable_lazy_load_no_trans", "true");
            setProperty("hibernate.connection.CharSet", "utf8");
            setProperty("hibernate.connection.characterEncoding", "utf8");
            setProperty("hibernate.connection.useUnicode", "true");
        }
    };
}

@Primary
@Bean(name = "commonEntityManagerFactory")
@Qualifier(value="commonEntityManager")
public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setDataSource(commonDataSource());
    factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setGenerateDdl(Boolean.TRUE);
    vendorAdapter.setShowSql(Boolean.TRUE);
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setJpaProperties(additionalProperties());

    factory.afterPropertiesSet();
    return factory.getObject();
}


@Primary
@Bean(name = "commonDataSource")
public DataSource commonDataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
    dataSource.setUsername("fpuser");
    dataSource.setPassword("fpdb$123456");

    return dataSource;
}

@Primary
@Bean(name = "commonTransactionManager")
public PlatformTransactionManager commonTransactionManager() {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
       transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
    return transactionManager;
}

@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
    return new PersistenceExceptionTranslationPostProcessor();
}
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    @Qualifier(value="profileEntityManager")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }
}
@Autowired
@Qualifier(value="profileEntityManager")
protected EntityManager entityManager;

@Override
public EntityManager getEntityManager() {
    return entityManager;
}
注射示例:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
    }

    @Primary
    @Bean(name = "commonEntityManagerFactory")
    public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("common");
        factory.setDataSource(commonDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "commonDataSource")
    public DataSource commonDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "commonTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("profile");
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }

Properties additionalProperties() {
    return new Properties() {
        {  
            setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
            setProperty("hibernate.hbm2ddl.auto", "update");
            setProperty("hibernate.show_sql", "true");
            setProperty("hibernate.enable_lazy_load_no_trans", "true");
            setProperty("hibernate.connection.CharSet", "utf8");
            setProperty("hibernate.connection.characterEncoding", "utf8");
            setProperty("hibernate.connection.useUnicode", "true");
        }
    };
}

@Primary
@Bean(name = "commonEntityManagerFactory")
@Qualifier(value="commonEntityManager")
public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setDataSource(commonDataSource());
    factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setGenerateDdl(Boolean.TRUE);
    vendorAdapter.setShowSql(Boolean.TRUE);
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setJpaProperties(additionalProperties());

    factory.afterPropertiesSet();
    return factory.getObject();
}


@Primary
@Bean(name = "commonDataSource")
public DataSource commonDataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
    dataSource.setUsername("fpuser");
    dataSource.setPassword("fpdb$123456");

    return dataSource;
}

@Primary
@Bean(name = "commonTransactionManager")
public PlatformTransactionManager commonTransactionManager() {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
       transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
    return transactionManager;
}

@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
    return new PersistenceExceptionTranslationPostProcessor();
}
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    @Qualifier(value="profileEntityManager")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }
}
@Autowired
@Qualifier(value="profileEntityManager")
protected EntityManager entityManager;

@Override
public EntityManager getEntityManager() {
    return entityManager;
}

由于是Spring Jpa配置,您可能需要这样做:

第一名:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
    }

    @Primary
    @Bean(name = "commonEntityManagerFactory")
    public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("common");
        factory.setDataSource(commonDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "commonDataSource")
    public DataSource commonDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "commonTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("profile");
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }

Properties additionalProperties() {
    return new Properties() {
        {  
            setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
            setProperty("hibernate.hbm2ddl.auto", "update");
            setProperty("hibernate.show_sql", "true");
            setProperty("hibernate.enable_lazy_load_no_trans", "true");
            setProperty("hibernate.connection.CharSet", "utf8");
            setProperty("hibernate.connection.characterEncoding", "utf8");
            setProperty("hibernate.connection.useUnicode", "true");
        }
    };
}

@Primary
@Bean(name = "commonEntityManagerFactory")
@Qualifier(value="commonEntityManager")
public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setDataSource(commonDataSource());
    factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setGenerateDdl(Boolean.TRUE);
    vendorAdapter.setShowSql(Boolean.TRUE);
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setJpaProperties(additionalProperties());

    factory.afterPropertiesSet();
    return factory.getObject();
}


@Primary
@Bean(name = "commonDataSource")
public DataSource commonDataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
    dataSource.setUsername("fpuser");
    dataSource.setPassword("fpdb$123456");

    return dataSource;
}

@Primary
@Bean(name = "commonTransactionManager")
public PlatformTransactionManager commonTransactionManager() {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
       transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
    return transactionManager;
}

@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
    return new PersistenceExceptionTranslationPostProcessor();
}
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    @Qualifier(value="profileEntityManager")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }
}
@Autowired
@Qualifier(value="profileEntityManager")
protected EntityManager entityManager;

@Override
public EntityManager getEntityManager() {
    return entityManager;
}
秒:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
    }

    @Primary
    @Bean(name = "commonEntityManagerFactory")
    public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("common");
        factory.setDataSource(commonDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "commonDataSource")
    public DataSource commonDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "commonTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("profile");
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }

Properties additionalProperties() {
    return new Properties() {
        {  
            setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
            setProperty("hibernate.hbm2ddl.auto", "update");
            setProperty("hibernate.show_sql", "true");
            setProperty("hibernate.enable_lazy_load_no_trans", "true");
            setProperty("hibernate.connection.CharSet", "utf8");
            setProperty("hibernate.connection.characterEncoding", "utf8");
            setProperty("hibernate.connection.useUnicode", "true");
        }
    };
}

@Primary
@Bean(name = "commonEntityManagerFactory")
@Qualifier(value="commonEntityManager")
public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setDataSource(commonDataSource());
    factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setGenerateDdl(Boolean.TRUE);
    vendorAdapter.setShowSql(Boolean.TRUE);
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setJpaProperties(additionalProperties());

    factory.afterPropertiesSet();
    return factory.getObject();
}


@Primary
@Bean(name = "commonDataSource")
public DataSource commonDataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
    dataSource.setUsername("fpuser");
    dataSource.setPassword("fpdb$123456");

    return dataSource;
}

@Primary
@Bean(name = "commonTransactionManager")
public PlatformTransactionManager commonTransactionManager() {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
       transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
    return transactionManager;
}

@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
    return new PersistenceExceptionTranslationPostProcessor();
}
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    @Qualifier(value="profileEntityManager")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }
}
@Autowired
@Qualifier(value="profileEntityManager")
protected EntityManager entityManager;

@Override
public EntityManager getEntityManager() {
    return entityManager;
}
注射示例:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
    }

    @Primary
    @Bean(name = "commonEntityManagerFactory")
    public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("common");
        factory.setDataSource(commonDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "commonDataSource")
    public DataSource commonDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "commonTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("profile");
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.common",entityManagerFactoryRef = "commonEntityManagerFactory",transactionManagerRef = "commonTransactionManager")
public class PersistenceConfigCommon {

    public PersistenceConfigCommon() {
    }

Properties additionalProperties() {
    return new Properties() {
        {  
            setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
            setProperty("hibernate.hbm2ddl.auto", "update");
            setProperty("hibernate.show_sql", "true");
            setProperty("hibernate.enable_lazy_load_no_trans", "true");
            setProperty("hibernate.connection.CharSet", "utf8");
            setProperty("hibernate.connection.characterEncoding", "utf8");
            setProperty("hibernate.connection.useUnicode", "true");
        }
    };
}

@Primary
@Bean(name = "commonEntityManagerFactory")
@Qualifier(value="commonEntityManager")
public EntityManagerFactory commonEntityManagerFactory() {entityManagerFactoryBean");
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setDataSource(commonDataSource());
    factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setGenerateDdl(Boolean.TRUE);
    vendorAdapter.setShowSql(Boolean.TRUE);
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setJpaProperties(additionalProperties());

    factory.afterPropertiesSet();
    return factory.getObject();
}


@Primary
@Bean(name = "commonDataSource")
public DataSource commonDataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://10.10.1.11:3306/database1?characterEncoding=UTF-8");
    dataSource.setUsername("fpuser");
    dataSource.setPassword("fpdb$123456");

    return dataSource;
}

@Primary
@Bean(name = "commonTransactionManager")
public PlatformTransactionManager commonTransactionManager() {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
       transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
    return transactionManager;
}

@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
    return new PersistenceExceptionTranslationPostProcessor();
}
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(value = "com.mycompany.project.persistence.orm.module.profile",entityManagerFactoryRef = "profileEntityManagerFactory",transactionManagerRef = "profileTransactionManager")
public class PersistenceConfigProfile {

    public PersistenceConfigProfile() {
    }


    Properties additionalProperties() {
        return new Properties() {
            {  
                setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
                setProperty("hibernate.hbm2ddl.auto", "update");
                setProperty("hibernate.show_sql", "true");
                setProperty("hibernate.enable_lazy_load_no_trans", "true");
                setProperty("hibernate.connection.CharSet", "utf8");
                setProperty("hibernate.connection.characterEncoding", "utf8");
                setProperty("hibernate.connection.useUnicode", "true");
            }
        };
     }

    @Primary
    @Bean(name = "profileEntityManagerFactory")
    @Qualifier(value="profileEntityManager")
    public EntityManagerFactory profileEntityManagerFactory() {entityManagerFactoryBean");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setDataSource(profileDataSource());
        factory.setPackagesToScan("com.mycompany.project.persistence.orm.module");

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(Boolean.TRUE);
        vendorAdapter.setShowSql(Boolean.TRUE);
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setJpaProperties(additionalProperties());

        factory.afterPropertiesSet();
        return factory.getObject();
    }


    @Primary
    @Bean(name = "profileDataSource")
    public DataSource profileDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://10.10.1.63:3306/database2?characterEncoding=UTF-8");
        dataSource.setUsername("fpuser");
        dataSource.setPassword("fpdb$123456");

        return dataSource;
    }

    @Primary
    @Bean(name = "profileTransactionManager")
    public PlatformTransactionManager commonTransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
           transactionManager.setEntityManagerFactory(commonEntityManagerFactory());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }
}
@Autowired
@Qualifier(value="profileEntityManager")
protected EntityManager entityManager;

@Override
public EntityManager getEntityManager() {
    return entityManager;
}

持久性单元名称通过
factory.setPersistenceUnitName(“profile”)
My bad;)显式指定。但您仍然将两个EntityManagerFactory定义为自动布线的默认候选对象。正如我所说的,这可能会让spring感到困惑。根据@Primary:
的文档,当多个候选者有资格自动关联一个单值依赖项时,应该优先考虑bean。如果候选对象中只存在一个“主”bean,则它将是自动连接的值。
持久性单元名称通过
factory.setPersistenceUnitName(“profile”)
My bad;)显式指定。但您仍然将两个EntityManagerFactory定义为自动布线的默认候选对象。正如我所说的,这可能会让spring感到困惑。根据@Primary:
的文档,当多个候选者有资格自动关联一个单值依赖项时,应该优先考虑bean。如果候选者中只存在一个“主要”bean,它将是自动连接的值。
我测试了您的建议,但仍然存在相同的异常:(@hamed我用另一个猜测更新了我的答案,希望有帮助。我正在使用spring 4.0.1。升级到4.1.1可能会解决我的问题吗?我不确定,你应该试试。如果你编辑你的问题并添加更多关于你的配置的信息也会很好(例如,您的存储库是如何注释的,您尝试从哪里访问
EntityManager
、相关persistence.xml(如果有)、应用程序上下文xml(如果有))可能缺少部分信息,这有助于社区解决您的问题。我测试了您的建议,但仍然存在相同的例外:(@hamed我用另一个猜测更新了我的答案,希望有帮助。我正在使用spring 4.0.1。升级到4.1.1可能会解决我的问题吗?我不确定,你应该试试。如果你编辑你的问题并添加更多关于你的配置的信息也会很好(例如,如何注释存储库,从何处尝试访问
EntityManager
,相关persistence.xml(如有),应用程序上下文xml(如有))可能缺少部分信息可以帮助社区解决您的问题。我已测试,但仍然存在相同的问题。您是否尝试从代码中删除
@Primary
批注并查看结果?我已测试,但仍然存在相同的问题。您是否尝试从代码中删除
@Primary
批注并查看结果?