tam*_*987 3 java entity hibernate entitymanager eclipselink
我正在尝试以编程方式创建实体工厂管理器而不使用持久性文件
EntityManagerFactory emf;
Map<String, String> properties = new HashMap<String, String>();
properties.put("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
properties.put("hibernate.connection.url", "jdbc:mysql://173.194.25***************");
properties.put("hibernate.connection.username", "etech****");
properties.put("hibernate.connection.password", "A*****");
properties.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
properties.put("hibernate.show-sql", "true");
properties.put("provider", "org.hibernate.ejb.HibernatePersistence");
emf = Persistence.createEntityManagerFactory(idClient, properties);
Run Code Online (Sandbox Code Playgroud)
在线
emf = Persistence.createEntityManagerFactory(idClient, properties);
Run Code Online (Sandbox Code Playgroud)
我收到错误:
org.springframework.beans.factory.BeanCreationException:创建名为'com****RepositoryFieldsFieldWorkerRepositoryImpl'的bean时出错:init方法的调用失败; 嵌套异常是javax.persistence.PersistenceException:没有名为idClient的EntityManager的持久性提供程序
我该如何解决这个问题?
任何帮助将不胜感激
Bri*_*ice 10
这是一种纯粹的编程方式,可以在没有弹簧的情况下构建实体管理器persistence.xml.常量取自org.hibernate.cfg.AvailableSettings:
entityManagerFactory = new HibernatePersistenceProvider().createContainerEntityManagerFactory(
archiverPersistenceUnitInfo(),
ImmutableMap.<String, Object>builder()
.put(JPA_JDBC_DRIVER, JDBC_DRIVER)
.put(JPA_JDBC_URL, JDBC_URL)
.put(DIALECT, Oracle12cDialect.class)
.put(HBM2DDL_AUTO, CREATE)
.put(SHOW_SQL, false)
.put(QUERY_STARTUP_CHECKING, false)
.put(GENERATE_STATISTICS, false)
.put(USE_REFLECTION_OPTIMIZER, false)
.put(USE_SECOND_LEVEL_CACHE, false)
.put(USE_QUERY_CACHE, false)
.put(USE_STRUCTURED_CACHE, false)
.put(STATEMENT_BATCH_SIZE, 20)
.build());
entityManager = entityManagerFactory.createEntityManager();
Run Code Online (Sandbox Code Playgroud)
臭名昭着 PersistenceUnitInfo
private static PersistenceUnitInfo archiverPersistenceUnitInfo() {
return new PersistenceUnitInfo() {
@Override
public String getPersistenceUnitName() {
return "ApplicationPersistenceUnit";
}
@Override
public String getPersistenceProviderClassName() {
return "org.hibernate.jpa.HibernatePersistenceProvider";
}
@Override
public PersistenceUnitTransactionType getTransactionType() {
return PersistenceUnitTransactionType.RESOURCE_LOCAL;
}
@Override
public DataSource getJtaDataSource() {
return null;
}
@Override
public DataSource getNonJtaDataSource() {
return null;
}
@Override
public List<String> getMappingFileNames() {
return Collections.emptyList();
}
@Override
public List<URL> getJarFileUrls() {
try {
return Collections.list(this.getClass()
.getClassLoader()
.getResources(""));
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
@Override
public URL getPersistenceUnitRootUrl() {
return null;
}
@Override
public List<String> getManagedClassNames() {
return Collections.emptyList();
}
@Override
public boolean excludeUnlistedClasses() {
return false;
}
@Override
public SharedCacheMode getSharedCacheMode() {
return null;
}
@Override
public ValidationMode getValidationMode() {
return null;
}
@Override
public Properties getProperties() {
return new Properties();
}
@Override
public String getPersistenceXMLSchemaVersion() {
return null;
}
@Override
public ClassLoader getClassLoader() {
return null;
}
@Override
public void addTransformer(ClassTransformer transformer) {
}
@Override
public ClassLoader getNewTempClassLoader() {
return null;
}
};
}
Run Code Online (Sandbox Code Playgroud)
请注意,Spring提供了简化的方式来配置持久性,同时支持多个hibernate版本.(Spring 4.2支持Hibernate高达5.1,Spring 4.3支持Hibernate高达5.2).
小智 1
persistence.xml根据 JPA 规范,在部署时创建持久性单元必须有一个文件。
请参阅在没有 persistence.xml 配置文件的情况下创建 JPA EntityManager
| 归档时间: |
|
| 查看次数: |
15493 次 |
| 最近记录: |