【发布时间】:2018-10-23 15:43:33
【问题描述】:
是否有适用于 MySQL 8 的 Hibernate 方言?或者我应该使用 Hibernate 附带的 org.hibernate.dialect.MySQL57Dialect? 我正在使用休眠 5.2.16
【问题讨论】:
是否有适用于 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
我没有使用过它,所以我不能评论它的质量,但支持似乎在那里。
【讨论】:
Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment],mysql版本是8,hibernate版本是5.0.1。我将其恢复为 MySQL57Dialect 工作正常
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL8Dialect
spring.jpa.properties.hibernate.dialect.storage_engine=innodb
来自here
【讨论】:
查看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。
【讨论】:
是的,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 版本。
因此,我建议使用 MySQL 5.X,直到发布带有 Hibernate 的官方方言。
【讨论】:
我只需将以下配置添加到我的application.properties 文件即可解决此问题。
#Hibernate
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL8Dialect
spring.jpa.driverClassName= com.mysql.cj.jdbc.Driver
【讨论】: