必须至少存在一个JPA元模型!创建名称为' jpaMappingContext'的bean时出错

时间:2016-12-29 07:25:27

标签: spring hibernate jpa persistence

我在我的应用程序中使用jpa进行数据库连接。但现在我想使用java代码获取entityManager。所以我使用此代码创建entityManager:

public static EntityManager entityManagerFactory(String dbName){

 LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();

   entityManagerFactory.setPersistenceUnitName(dbName);

  entityManagerFactory.setJpaVendorAdapter(new HibernateJpaVendorAdapter());

  entityManagerFactory.setJpaDialect(new HibernateJpaDialect());

 entityManagerFactory.setPackagesToScan("com.howtodoinjava.demo.model");

 entityManagerFactory.setJpaPropertyMap(hibernateJpaProperties(dbName));

 entityManagerFactory.afterPropertiesSet();

  JpaTransactionManager jpaTransactionManager=transactionManager(entityManagerFactory.getObject());

return jpaTransactionManager.getEntityManagerFactory().createEntityManager();

}

并在此处设置hibernate对应的Jpa Properties 这里的每个数据库:

  private static  Map<String, ?> hibernateJpaProperties(String dbName) {
HashMap<String, String> properties = new HashMap<String, String>();
properties.put("javax.persistence.transactionType", "RESOURCE_LOCAL");
properties.put("hibernate.connection.username", "root");
properties.put("hibernate.connection.password" ,"root");
properties.put("hibernate.connection.driver_class","com.mysql.jdbc.Driver");            
properties.put("hibernate.connection.url", "jdbc:mysql://localhost:3306/"+dbName );
properties.put("hibernate.dialect" ,"org.hibernate.dialect.MySQL5Dialect");
    properties.put("hibernate.hbm2ddl.auto", "");
    properties.put("hibernate.show_sql", "false");
    properties.put("hibernate.format_sql", "false");
    properties.put("hibernate.c3p0.min_size", "5");
    properties.put("hibernate.c3p0.max_size", "10");
    properties.put("hibernate.c3p0.max_statements", "100");
    properties.put("hibernate.c3p0.acquire_increment", "100");
    properties.put("hibernate.c3p0.timeout", "300"); // 5mins
    properties.put("hibernate.c3p0.idle_test_period", "100");
  return properties;

}

当我在调试模式下启动应用程序时,我将分析为。我有一个主数据库和数据库的传递名称 到entityManagerFactory(String dbName)并成功获得了entityManager并从master数据库表中读取了数据库名称,同样也为我们成功创建了这些数据库的实体管理器。之后我收到了这个错误:

  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: At least one JPA metamodel must be present!
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBea

任何人都可以帮助我如何解决这个问题。

0 个答案:

没有答案