我在hibernate.cfg.xml文件中使用的是Hibernate 5.4.17。我有这样的dialect属性:
hibernate.cfg.xml
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
字符串这是好的使用或我应该改变它:
<property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>
型
oprakyz71#
你的hibernate方言的版本应该尽可能接近你的数据库版本。但不应该高于数据库版本。所以对于你的情况,org.hibernate.dialect.MySQL8Dialect将是最好的选择。更多的细节请参见hibernate文档的这一部分。
org.hibernate.dialect.MySQL8Dialect
hc8w905p2#
对于其他偶然发现这个答案的人:这在Hibernate的新版本中已经改变了。从Hibernate documentation:自Hibernate 6起,Dialect的单个子类表示给定产品特定SQL方言的所有版本。数据库的版本在运行时通过传递给构造函数的DialectResolutionInfo和getVersion()属性公开。使用Hibernate的程序应该远离使用版本化的方言类,例如MySQL8Dialect。这些类现在不推荐使用,并将在未来的版本中删除。所以如果你有hibernate6或更高版本,你应该使用org.hibernate.dialect.MySQLDialect。
org.hibernate.dialect.MySQLDialect
2条答案
按热度按时间oprakyz71#
你的hibernate方言的版本应该尽可能接近你的数据库版本。但不应该高于数据库版本。所以对于你的情况,
org.hibernate.dialect.MySQL8Dialect
将是最好的选择。更多的细节请参见hibernate文档的这一部分。
hc8w905p2#
对于其他偶然发现这个答案的人:这在Hibernate的新版本中已经改变了。从Hibernate documentation:
自Hibernate 6起,Dialect的单个子类表示给定产品特定SQL方言的所有版本。数据库的版本在运行时通过传递给构造函数的DialectResolutionInfo和getVersion()属性公开。
使用Hibernate的程序应该远离使用版本化的方言类,例如MySQL8Dialect。这些类现在不推荐使用,并将在未来的版本中删除。
所以如果你有hibernate6或更高版本,你应该使用
org.hibernate.dialect.MySQLDialect
。