如何解决“找不到方言类:org.hibernate.dialect.MYSQLDialect”异常?
Posted
技术标签:
【中文标题】如何解决“找不到方言类:org.hibernate.dialect.MYSQLDialect”异常?【英文标题】:How to resolve "Dialect class not found: org.hibernate.dialect.MYSQLDialect" Exception? 【发布时间】:2014-08-25 07:50:35 【问题描述】:我对休眠非常陌生,所以我正在通过观看视频教程来练习。我关注的链接是,
https://www.youtube.com/watch?v=FFMOZY4z6bE&list=PL4AFF701184976B25&index=5
这是一个简单的 eclipse 中的 java 项目。这里我使用 mysql 数据库。这是我的 Hibernate.cfg.xml 文件,
com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/hibernatedb 根 根
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MYSQLDialect</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create</property>
<!-- Names the annotated entity class -->
<mapping class="com.***.dto.UserDetails"/>
我遇到了这种错误,
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" org.hibernate.HibernateException: Dialect class not found: org.hibernate.dialect.MYSQLDialect
at org.hibernate.dialect.resolver.DialectFactory.constructDialect(DialectFactory.java:159)
at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:99)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:117)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870)
at com.aurodisplay.hibernate.HibernateTest.main(HibernateTest.java:17)
Caused by: java.lang.ClassNotFoundException: org.hibernate.dialect.MYSQLDialect
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:192)
at org.hibernate.dialect.resolver.DialectFactory.constructDialect(DialectFactory.java:156)
谁能帮帮我。
【问题讨论】:
添加包含org.hibernate.dialect.MYSQLDialect
的jar文件...
你使用哪个休眠版本?
Hibernate 需要一个驱动程序才能连接到 MySQL。由于 Hibernate 无法包含每个数据库的驱动程序,因此您需要自己提供。
它在那里..我按照上面的视频教程进行操作
@Jens 其 3.6.4 与视频教程中的相同
【参考方案1】:
如果您使用的是属性文件,请确保行尾没有空格。
hibernate.dialect=org.hibernate.dialect.MySQLDialect
【讨论】:
【参考方案2】:答案就在问题中。您在 jar 文件中找到了MySQLDialect
,但您的配置文件尝试使用MYSQLDialect
。 Java 区分大小写。
试着改成下面
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
【讨论】:
以上是关于如何解决“找不到方言类:org.hibernate.dialect.MYSQLDialect”异常?的主要内容,如果未能解决你的问题,请参考以下文章