【发布时间】:2021-01-21 21:01:34
【问题描述】:
我正在尝试使用休眠将休眠定义的对象模型迁移到 DDL。这类似于使用实体框架的代码优先方法 我在intelliJ中的实际主要功能的小sn-p
我的persistence.xml 文件定义如下:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:mysql://localhost:3306/testbd</property>
<property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- <property name="connection.username"/> -->
<!-- <property name="connection.password"/> -->
<!-- DB schema will be updated if needed -->
<property name="hibernate.hbm2ddl.auto">create</property>
<mapping class="xx.xxx.xxx.xxx.xxx"/>
<mapping class="xx.xxx.xxx.xxx.xxx"/>
<mapping class="xx.xxx.xxx.xxx.xxx"/>
<mapping class="xx.xxx.xxx.xxx.xxx"/>
<mapping class="xx.xxx.xxx.xxx.xxx"/>
<mapping class="xx.xxx.xxx.xxx.xxx"/>
</session-factory>
</hibernate-configuration>
我有下面的类,主要方法是让整个事情真正发挥作用。
public static void main(String[] args){
// get configuration is not available (marked in red in intelliJ)
Configuration configuration = Configuration.getConfiguration().configure("persistence.xml");
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties());
SessionFactory factory = configuration.buildSessionFactory(builder.build());
//This commented section worked but I keep getting the below exception
/* Map<String, String> settings = new HashMap<>();
settings.put("connection.driver_class", "com.mysql.jdbc.Driver");
settings.put("dialect", "org.hibernate.dialect.MySQL8InnoDBDialect");
settings.put("hibernate.connection.url", "jdbc:mysql://localhost:3306/juju_hibernate?useSSL=false");
settings.put("hibernate.connection.username", "juju");
settings.put("hibernate.connection.password", "iBrand2008");
settings.put("hibernate.hbm2ddl.auto", "create");
settings.put("show_sql", "true");
MetadataSources metadata = new MetadataSources(
new StandardServiceRegistryBuilder()
.applySettings(settings)
.build());
metadata.addAnnotatedClass(ClickEntity.class);
metadata.addAnnotatedClass(ClientAccessTokenEntity.class);
metadata.addAnnotatedClass(ClientEntity.class);
metadata.addAnnotatedClass(DeviceEntity.class);
metadata.addAnnotatedClass(DeviceRespondentInformationEntity.class);
metadata.addAnnotatedClass(DynamicDataEntity.class);
metadata.addAnnotatedClass(DynamicDataValuesEntity.class);
metadata.addAnnotatedClass(DynamicResponseEntity.class);
metadata.addAnnotatedClass(EmailOpenedEntity.class);
metadata.addAnnotatedClass(LoggerEntity.class);
metadata.addAnnotatedClass(PostSyncActionCompletedEntity.class);
metadata.addAnnotatedClass(PostSyncActionEntity.class);
metadata.addAnnotatedClass(PostSyncToExecuteEntity.class);
metadata.addAnnotatedClass(ProjectEntity.class);
metadata.addAnnotatedClass(QuestionnaireEntity.class);
metadata.addAnnotatedClass(RespondentEntity.class);
metadata.addAnnotatedClass(RespondentTokenEntity.class);
metadata.addAnnotatedClass(RespondentUniqueIdentiferEntity.class);
metadata.addAnnotatedClass(RespondentEntity.class);
metadata.addAnnotatedClass(ResponseEntity.class);
metadata.addAnnotatedClass(RightEntity.class);
metadata.addAnnotatedClass(RoleEntity.class);
metadata.addAnnotatedClass(StatusEntity.class);
metadata.addAnnotatedClass(TagEntity.class);
metadata.addAnnotatedClass(TagProjectEntity.class);
metadata.addAnnotatedClass(TerminalEntity.class);
metadata.addAnnotatedClass(UserEntity.class);
SchemaExport schemaExport = new SchemaExport();
schemaExport.setHaltOnError(true);
schemaExport.setFormat(true);
schemaExport.setDelimiter(";");
schemaExport.setOutputFile("db-schema.sql");
schemaExport.createOnly(EnumSet.of(TargetType.SCRIPT),metadata.buildMetadata());*/
}
Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:107)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:246)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:116)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionCreator.makeConnection(DriverManagerConnectionCreator.java:37)
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.addConnections(DriverManagerConnectionProviderImpl.java:331)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.<init>(DriverManagerConnectionProviderImpl.java:250)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.<init>(DriverManagerConnectionProviderImpl.java:228)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections$Builder.build(DriverManagerConnectionProviderImpl.java:369)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:98)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:73)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:107)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:246)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:176)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:118)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:473)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:84)
at org.hibernate.boot.MetadataSources.buildMetadata(MetadataSources.java:185)
at com.nomadlogic.juju.databse.DatabaseMigration.main(DatabaseMigration.java:68)
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
【问题讨论】:
标签: java hibernate hibernate-mapping