如果未使用spring-boot设置“ hibernate.dialect”,则对DialectResolutionInfo的访问不能为空

Dar*_*lyn 4 java spring hibernate

我正在尝试在我的spring-boot项目中配置休眠模式。

我有application.properties文件

spring.datasource.url=jdbc:mysql:url?useSSL=false
spring.datasource.username=name
spring.datasource.password=password

hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql:url
hibernate.connection.username = name
hibernate.connection.password = password
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50
hibernate.dialect=org.hibernate.dialect.MySQLDialect
Run Code Online (Sandbox Code Playgroud)

以及在UserDAO类中注册用户的方法:

public void registerUser(User u){
    Session session = factory.openSession();
    Transaction tx = null;
    try {
        tx = session.beginTransaction();
        session.save(u);
        tx.commit();
    } catch (HibernateException e) {
        if (tx!=null) tx.rollback();
        e.printStackTrace();
    } finally {
        session.close();
    }
    System.out.println("yay all done");
}
Run Code Online (Sandbox Code Playgroud)

但是我收到错误:

> Caused by: 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)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:179)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:119)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:84)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:474)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:85)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:689)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> com.groups.data.UserDAO.<init>(UserDAO.java:18) ~[classes/:na]    ... 52
> common frames omitted Caused by: org.hibernate.HibernateException:
> Access to DialectResolutionInfo cannot be null when
> 'hibernate.dialect' not set   at
> org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:94)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     at
> org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
> ~[hibernate-core-5.3.2.Final.jar:5.3.2.Final]     ... 66 common frames
> omitted
Run Code Online (Sandbox Code Playgroud)

我已经按要求配置了方言,我什至尝试创建良好的旧hibernate.cfg.xml文件,但错误仍然相同(甚至似乎忽略了该文件)。

为什么会发生?从字面上看,昨天它没有问题。今天,我尝试创建cfg文件,但该文件停止工作(已删除)。

我尝试配置越多的休眠状态,似乎越会激怒正在使用它的任何人,并且使它无法工作。

这可能是问题所在?

感谢帮助!

Edd*_*ddy 7

您是否已将此行添加到application.properties文件中?

spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
Run Code Online (Sandbox Code Playgroud)

DB2
org.hibernate.dialect.DB2Dialect

DB2 AS / 400
org.hibernate.dialect.DB2400Dialect

DB2 OS390
org.hibernate.dialect.DB2390Dialect

PostgreSQL的
org.hibernate.dialect.PostgreSQLDialect

的MySQL
org.hibernate.dialect.MySQLDialect

带有InnoDB的MySQL
org.hibernate.dialect.MySQLInnoDBDialect

MySQL与MyISAM
org.hibernate.dialect.MySQLMyISAMDialect

Oracle(任何版本)
org.hibernate.dialect.OracleDialect

甲骨文9i / 10g
org.hibernate.dialect.Oracle9Dialect

Sybase公司
org.hibernate.dialect.SybaseDialect

Sybase Anywhere
org.hibernate.dialect.SybaseAnywhereDialect

Microsoft SQL服务器
org.hibernate.dialect.SQLServerDialect

SAP数据库
org.hibernate.dialect.SAPDBDialect

Informix
org.hibernate.dialect.InformixDialect

超音速SQL
org.hibernate.dialect.HSQLDialect

英格利斯
org.hibernate.dialect.IngresDialect

进展
org.hibernate.dialect.ProgressDialect

麦考伊SQL
org.hibernate.dialect.MckoiDialect

基地间
org.hibernate.dialect.InterbaseDialect

点库
org.hibernate.dialect.PointbaseDialect

FrontBase
org.hibernate.dialect.FrontbaseDialect

火鸟
org.hibernate.dialect.FirebirdDialect