没有为EntityManager命名的持久性提供程序

时间:2016-12-29 06:01:57

标签: database spring hibernate jpa persistence

我的应用程序,需要在运行时使用jpa连接多个数据库bcz你不知道db的名称和数据库的数量。它可能是一个db或五个。它是在运行时决定的。所以我在jpa中使用java代码进行连接。为此,我使用下面的代码获取连接并创建实体管理器

public  EntityManager entityManagerFactory(String dbName)

BasicDataSource dbcpDataSource = new BasicDataSource();
        dbcpDataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dbcpDataSource.setUrl("jdbc:mysql://localhost:3306/"+ dbName);
        dbcpDataSource.setUsername("root");
        dbcpDataSource.setPassword("root");
        // Enable statement caching (Optional)
        dbcpDataSource.setPoolPreparedStatements(true);
        dbcpDataSource.setMaxOpenPreparedStatements(50);
        // JPA properties
        Map<String, Object> properties = new HashMap<>();
        // This line will tell hibernate (JPA) to use DBCP
        properties.put(AvailableSettings.DATASOURCE, dbcpDataSource);
        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");
        EntityManagerFactory factory =         Persistence.createEntityManagerFactory("User", properties); 
        EntityManager entityManager = factory.createEntityManager();

    return entityManager;
}

但我在这里遇到一个错误:

javax.persistence.PersistenceException:没有

的持久性提供程序

EntityManager名为User

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)

at com.howtodoinjava.demo.util.RootConfig.entityManagerFactory(RootConfig.java:86)

我知道这个问题bcz我没有在这里定义持久性单位。任何人都可以帮助我而不在xml中定义持久性单元。如何为多个数据库创建实体管理器。如果我的方式是错误的,请建议我如何为多个数据库创建多个实体管理器。

0 个答案:

没有答案