启动应用程序时收到异常:
Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialect.MySQL8Dialect] as strategy [org.hibernate.dialect.Dialect]
at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:126)
我正在使用MySQL 8.0。
pom.xml:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.12.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
hibernate.cfg.xml:
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/botdb?serverTimezone=UTC</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.connection.useSSL">false</property>
<property name="hibernate.enable_lazy_load_no_trans">true</property>
答案 0 :(得分:0)
根据pom.xml,您当前正在使用Hibernate 5.2.12。从5.2 Javadocs可以看到它没有MySQL8Dialect
。
MySQL8Dialect是在Hibernate 5.3中引入的(请参见Javadoc)。可以通过将Hibernate更新为5.3或5.4来解决问题。
如果无法更新Hibernate,则必须创建自定义方言。就像将MySQL8Dialect.java
从较新版本复制到您的代码库并从persistence.xml引用它一样容易。可能需要进行细微的修改。