- 出错代码:
<?xml version=‘1.0‘ encoding=‘utf-8‘?><!-- ~ Hibernate, Relational Persistence for Idiomatic Java ~ ~ License: ????GNU Lesser General Public License (LGPL), version 2.1 or later. ~ See the ????lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. --><!DOCTYPE hibernate-configuration PUBLIC ???????"-//Hibernate/Hibernate Configuration DTD 3.0//EN" ???????"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> ???<session-factory> ???????<!-- 数据库基本配置参数 --> ???????<property name="hibernate.connection.url">jdbc:mysql:///javaweb</property> ???????<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> ???????<property name="hibernate.connection.username">root</property> ???????<property name="hibernate.connection.password">wyd</property> ???????<!-- hibernate常用配置 --> ???????<!-- 配置Hibernate生成sql的方式 --> ???????<property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect</property> ???????<!-- 查看hibernate生成的sql语句 --> ???????<property name="hibernate.show_sql">true</property> ???????<!-- 格式化sql语句 --> ???????<property name="hibernate.format_sql">true</property> ???????<!-- 自动见表 --> ???????<property name="hibernate.hbm2ddl.auto">update</property> ???????<!-- 映射配置 --> ???????<mapping resource="claire/a_config/User.hbm.xml" /> ???</session-factory></hibernate-configuration>
<property name="hibernate.hbm2ddl.auto">update</property>
- 异常输出:
org.hibernate.exception.SQLGrammarException: could not execute statement ???at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63) ???at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42) ???at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111) ???at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97) ???at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:178) ???at org.hibernate.dialect.identity.GetGeneratedKeysDelegate.executeAndExtract(GetGeneratedKeysDelegate.java:57) ???at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:42) ???at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2933) ???at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3524) ???at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81) ???at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:637) ???at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:282) ???at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:263) ???at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:317) ???at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:318) ???at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:275) ???at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:182) ???at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:113) ???at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192) ???at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38) ???at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177) ???at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32) ???at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73) ???at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:692) ???at org.hibernate.internal.SessionImpl.save(SessionImpl.java:684) ???at org.hibernate.internal.SessionImpl.save(SessionImpl.java:679) ???at claire.a_config.APP.test(APP.java:20) ???at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ???at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ???at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ???at java.lang.reflect.Method.invoke(Method.java:498) ???at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) ???at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) ???at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) ???at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) ???at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) ???at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) ???at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) ???at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) ???at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) ???at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) ???at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) ???at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) ???at org.junit.runners.ParentRunner.run(ParentRunner.java:309) ???at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) ???at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) ???at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) ???at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) ???at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) ???at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table ‘javaweb.users‘ doesn‘t exist ???at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ???at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ???at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ???at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ???at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) ???at com.mysql.jdbc.Util.getInstance(Util.java:381) ???at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030) ???at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) ???at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515) ???at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447) ???at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951) ???at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101) ???at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554) ???at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761) ???at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2046) ???at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1964) ???at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1949) ???at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175) ???... 45 more
- 出错原因:hibernate里的dialect和MySQL的版本不匹配,本机采用的MySQL为5.5.40版本,原先设置的Dialect只能在MySQL5.0版本前使用。
- 解决:将方言改为合适版本即可。
<property name="hibernate.dialect">org.hibernate.dialect.MySQL55Dialect</property>
* 方言版本查找方式
Hibernate设置自动生成表失败
原文地址:https://www.cnblogs.com/clairexxx/p/10480826.html