【问题标题】:Hibernate dialect for MySQL 8?MySQL 8 的休眠方言?
【发布时间】:2018-10-23 15:43:33
【问题描述】:

是否有适用于 MySQL 8 的 Hibernate 方言?或者我应该使用 Hibernate 附带的 org.hibernate.dialect.MySQL57Dialect? 我正在使用休眠 5.2.16

【问题讨论】:

    标签: java mysql hibernate


    【解决方案1】:

    MySQL8Dialect(org.hibernate.dialect.MySQL8Dialect) 在 hibernate bundle 5.3.1.Final 中可用。您可以使用:

    org.hibernate.dialect.MySQL8Dialect
    

    【讨论】:

    • 真棒...... spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect 对我来说非常适合 - HHH000400:使用方言:org.hibernate.dialect.MySQL8Dialect。想知道为什么这还不被接受?可能是我正在使用带有 Springboot 2.1.2 的 Hibernate 5.3.7。
    • 有没有办法在休眠 4.1.10 中使用这种方言?我现在使用的是 java 1.7,看起来我需要升级到 java 1.8 才能使用 hibernate 5.3.1,这对我来说是个大问题。有什么帮助吗?
    【解决方案2】:

    是的,对于 MySQL8,使用 org.hibernate.dialect.MySQL8Dialect

    【讨论】:

      【解决方案3】:

      如果您使用 Gradle(例如用于 Grails),只需配置:

      在 application.yml 中

      dataSource:
      ...
          driverClassName: com.mysql.cj.jdbc.Driver
          dialect: org.hibernate.dialect.MySQL8Dialect
      ....
      

      在 build.gradle 中

      dependencies {
          ...
          runtime 'mysql:mysql-connector-java:8.0.17'
          ...
      

      注意mysql-connector版本和未弃用的驱动类名

      【讨论】:

        【解决方案4】:

        我知道这个问题已经有几个星期了,但为了完整起见,Hibernate 5.3 似乎确实有一个 MySQL8 方言

        https://docs.jboss.org/hibernate/orm/5.3/javadocs/org/hibernate/dialect/package-summary.html

        我没有使用过它,所以我不能评论它的质量,但支持似乎在那里。

        【讨论】:

        • 我试了一下,有错误Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment],mysql版本是8,hibernate版本是5.0.1。我将其恢复为 MySQL57Dialect 工作正常
        • 不能说太多,但除非你的 Hibernate 版本号有错别字,否则我会首先猜测。它至少需要 5.3
        【解决方案5】:
        spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL8Dialect
        spring.jpa.properties.hibernate.dialect.storage_engine=innodb
        

        来自here

        【讨论】:

          【解决方案6】:

          查看MySQL 8's release notes,MySQL 8.x 一直在开发中,并且从 2018-04-19(不到一个月前)才推出 GA,所以我怀疑是否会有专门制作的方言为它。

          你可以看到所有hibernate方言here的列表,并且如你所见,没有MySQL 8方言。

          MySQLDialect 应仅用于 MySQL 5 及更早版本,而 MySQL57Dialect 目前应用于 MySQL 5.x 和 8.x。

          【讨论】:

          【解决方案7】:

          是的,MySql 8 的 MySQL8Dialect。 在我的情况下,我通过以下方式在我的 Spring Boot 应用程序中使用 MySQL8Dialect for MySql 8:

          spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect  
          

          【讨论】:

          • 请在您的答案中添加一些解释,以便其他人可以从中学习
          【解决方案8】:

          如果你使用的是 SpringBoot

          spring:
            jpa:
              hibernate:
                ddl-auto: update
              database-platform: org.hibernate.dialect.MySQL8Dialect
          

          【讨论】:

            【解决方案9】:

            我在安装 MySQL 8 Server 并尝试使用我的 Spring Boot 应用程序与之交互时遇到了类似的查询。

            但我做不到。

            当我探索 MySQL5Dialect 类的源代码时,它的文档清楚地提到这个方言类已经专用于 MySQL 5.X 版本。

            我不确定它是否支持 MySQL 8.X 版本。

            因此,我建议使用 MySQL 5.X,直到发布带有 Hibernate 的官方方言。

            【讨论】:

              【解决方案10】:

              我只需将以下配置添加到我的application.properties 文件即可解决此问题。

              #Hibernate
              
              spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL8Dialect
              
              spring.jpa.driverClassName= com.mysql.cj.jdbc.Driver 
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2020-05-12
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-01-03
                相关资源
                最近更新 更多