[英]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.