簡體   English   中英

MySQL 8 的休眠方言?

[英]Hibernate dialect for MySQL 8?

MySQL 8 有 Hibernate 方言嗎? 或者我應該使用 Hibernate 附帶的 org.hibernate.dialect.MySQL57Dialect 嗎? 我正在使用休眠 5.2.16

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

org.hibernate.dialect.MySQL8Dialect

是的,對於 MySQL8,使用org.hibernate.dialect.MySQL8Dialect

如果您使用 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 版本和非棄用的驅動程序類名

我知道這個問題已經有幾個星期了,但為了完整起見,Hibernate 5.3 確實有 MySQL8 方言

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

我沒有用過它,所以我不能評論它的質量,但支持似乎在那里。

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL8Dialect
spring.jpa.properties.hibernate.dialect.storage_engine=innodb

這里得到

查看MySQL 8 的發行說明,MySQL 8.x 一直在開發中,並且自 2018 年 4 月 19 日(不到一個月前)以來才用於 GA,所以我懷疑是否已經有專門為它制作的方言.

您可以在此處查看所有 hibernate 方言的列表,並且如您所見,沒有 MySQL 8 方言。

MySQLDialect應該只用於 MySQL 5 及更早版本,而MySQL57Dialect應該用於 MySQL 5.x 和 8.x。

是的,用於 MySql 8 的 MySQL8Dialect。在我的例子中,我通過以下方式在我的 Spring Boot 應用程序中使用了 MySQL8Dialect for MySql 8:

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

如果您使用的是 SpringBoot

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

我在安裝 MySQL 8 Server 時遇到了類似的查詢,並嘗試使用 Spring Boot 應用程序與之交互。

但我無法這樣做。

當我探索 MySQL5Dialect 類的源代碼時,它的文檔清楚地提到這個方言類專用於 MySQL 5.X 版本。

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

因此,我建議在 Hibernate 發布官方方言之前使用 MySQL 5.X。

我能夠通過簡單地將下面的配置添加到我的application.properties文件來解決這個問題。

#Hibernate

spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL8Dialect

spring.jpa.driverClassName= com.mysql.cj.jdbc.Driver 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM