引起:org.hibernate.HibernateException:当' hibernate.dialect'时,对DialectResolutionInfo的访问不能为null。没有设置。

时间:2016-11-24 06:48:17

标签: hibernate spring-boot

即使在设置了hibernate.dialect属性后,我也会遇到异常。 我使用的是带有spring boot 1.4.2的hibernate 5.0.11和带有5.7的mysql版本

application.properties is like this

# Hibernate
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=true
hibernate.hbm2ddl.auto=validate

pom.xml

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

这里有什么问题?

7 个答案:

答案 0 :(得分:17)

当我遇到该错误时,将以下行添加到properties文件中可解决此问题。

spring.jpa.database=mysql

答案 1 :(得分:1)

我也遇到了类似的问题,但意识到我没有正确地自定义数据库名称字段,从复制和粘贴到Springboot的tutorial创建的application.properties文件中:

spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3306/db_example
spring.datasource.username=springuser
spring.datasource.password=ThePassword

请务必将db_example springuserThePassword替换为您的实际值。

只是&#34; duh&#34;我自己的时刻,但可能对他人有用。

答案 2 :(得分:0)

可能你已经解决了这个问题,但我有类似的问题。

向mysql添加显式运行时依赖性应解决问题:

function my_method( int $id, ?string $string) { ...

允许spring boot根据类路径自动配置与jdbc相关的bean。

答案 3 :(得分:0)

在创建配置后添加以下内容可解决问题:

configuration.configure("hibernate.cfg.xml");

答案 4 :(得分:0)

我很想念:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

此帖子还提供了一些有用的提示:org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

答案 5 :(得分:0)

就我而言,我在排除数据库的情况下启动了 Spring Boot 应用程序:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, SecurityAutoConfiguration.class})

然后,一旦我开始创建 JPA 类,我就遇到了一个错误,我试图用它来修复:

@Bean(name = "entityManagerFactory")
public LocalSessionFactoryBean sessionFactory() {
    return new LocalSessionFactoryBean();
}

这导致了问题中提到的异常。

所以解决方案当然只是从 DataSourceAutoConfiguration.class 注释中删除 @SpringBootApplication,但我花了一些时间才注意到错误。

答案 6 :(得分:0)

在连接到 Oracle 数据库时,我的 Spring Boot 项目遇到了同样的问题。

这些是我为排除故障而执行的以下步骤-

  1. 确保application.properties文件d = np.zeros(5); d[b] = np.arange(5) 中存在相关的休眠属性,

    hibernate.dialect=org.hibernate.dialect.Oracle12cDialect

    方言取决于您使用的数据库。 spring.jpa.hibernate.ddl-auto=update 也可以是 5 个属性之一。

  2. 验证 JDBC 网址。例如oracle 的连接字符串类似于 hibernate.ddl-auto

  3. 验证数据库凭据。

  4. 确保使用的服务名称在您的属性文件中是大写。因为休眠是区分大小写。例如在 oracle 的情况下,服务名称类似于 jdbc:oracle:thin:@10.10.32.20:1521/SRV_LICENSING_D1