首页 > 解决方案 > 休眠:无法从数据库中获取建议的身份策略列表。可能是 JDBC 驱动程序问题

问题描述

我正在尝试使用休眠逆向工程从我的 mysql 数据库中自动生成我的实体模型。我正在使用 mysql server 8 并开发一个 spring boot 应用程序 2.2.4。在我的应用程序中,我已经在 build.gradle 中包含了 spring-jpa 和 mysql 连接驱动程序。

构建.gradle

buildscript {
  ext {
    springBootVersion = '2.2.4.RELEASE'
  }
  repositories {
    mavenCentral()
    jcenter()
  }
  dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
  }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
 mavenCentral()
 jcenter()
}

dependencies {
 implementation 'org.springframework.boot:spring-boot-starter-web'
 implementation 'org.springframework.kafka:spring-kafka'
 implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
 implementation 'mysql:mysql-connector-java:8.0.19'
}

休眠.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.password">root</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?useTimezone=true&amp;serverTimezone=UTC</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.default_schema">test</property>
</session-factory>
</hibernate-configuration>

我将我的 java 库和 java 编译器降级到 1.8,但最初我使用的是 java 11。我降级到 java 1.8 的原因是休眠配置没有检测到我的项目的类路径。

我的 mysql java 连接器:mysql-connector-java-8.0.19

休眠配置第 1 部分

休眠配置第 2 部分

查看数据库时来自休眠配置的错误消息

标签: javahibernate

解决方案


我将我的 mysql 版本降级到 5.x,它现在可以工作了。我不知道为什么它不适用于我的版本 8


推荐阅读