hibernate.hbm2ddl.auto = create(不创建表)
hibernate.hbm2ddl.auto = create(不创建表)
我了解到hibernate.hbm2ddl.auto
可以创建Schema并进行其他各种操作。但在我的情况下,它没有创建Schema。\n我在本地使用的是MYSQL,在我的本地主机上没有名为hibernate的Schema。\n我尝试了各种其他方法,但仍然得到相同的错误。\n
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'hibernate' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
\n完整错误\n
Aug 06, 2018 5:31:48 PM org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core {5.2.12.Final} Aug 06, 2018 5:31:48 PM org.hibernate.cfg.EnvironmentINFO: HHH000206: 未找到 hibernate.properties Aug 06, 2018 5:31:49 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final} Aug 06, 2018 5:31:49 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure WARN: HHH10001002: 使用Hibernate内置的连接池(非生产环境使用!) Aug 06, 2018 5:31:49 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001005: 使用驱动程序 [com.mysql.jdbc.Driver] 的URL [jdbc:mysql://localhost:3306/hibernate] Aug 06, 2018 5:31:49 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001001: 连接属性: {user=root, password=****} Aug 06, 2018 5:31:49 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001003: Autocommit模式: false Aug 06, 2018 5:31:49 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections INFO: HHH000115: Hibernate连接池大小: 20(最小=1) Mon Aug 06 17:31:49 IST 2018 WARN: 不推荐在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45+,5.6.26+和5.7.6+的要求,如果没有设置明确的选项,则必须默认建立SSL连接。为了符合现有不使用SSL的应用程序,verifyServerCertificate属性设置为'false'。您需要通过设置useSSL=false显式禁用SSL,或者设置useSSL=true并提供用于服务器证书验证的truststore。 Exception in thread "main" org.hibernate.service.spi.ServiceException: 无法创建所请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:271) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:233) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83) at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418) at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726) at main.MainClass.main(MainClass.java:16) Caused by: org.hibernate.exception.SQLGrammarException: 调用Driver#connect时出错 at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:106) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.java:101) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:123) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:41) at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58) at org.hibernate.engine.jdbc.connections.internal.PooledConnections.addConnections(PooledConnections.java:123) at org.hibernate.engine.jdbc.connections.internal.PooledConnections. (PooledConnections.java:42) at org.hibernate.engine.jdbc.connections.internal.PooledConnections. (PooledConnections.java:20) at org.hibernate.engine.jdbc.connections.internal.PooledConnections$Builder.build(PooledConnections.java:161) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:109) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:72) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:259) ... 14 more Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'hibernate' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.Util.getInstance(Util.java:408) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871) at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1714) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2190) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2221) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2016) at com.mysql.jdbc.ConnectionImpl. (ConnectionImpl.java:776) at com.mysql.jdbc.JDBC4Connection. (JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38) ... 29 more
\nhiberante.cfg.xml\n
org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver root root jdbc:mysql://localhost:3306/hibernate create false true
\nMODEL CLASS\n
package model; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity public class UserDetails { @Id private int userId; private String userName; public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } @Override public String toString() { return "UserDetails [userId=" + userId + ", userName=" + userName + "]"; } }
\nMAIN CLASS\n
package main; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import model.UserDetails; public class MainClass { public static void main(String[] args) { // TODO Auto-generated method stub UserDetails obj=new UserDetails(); obj.setUserId(1); obj.setUserName("ASHIHS"); SessionFactory sessionfactory=new Configuration().configure().buildSessionFactory(); Session session=sessionfactory.openSession(); session.beginTransaction(); session.save(obj); session.getTransaction().commit(); } }
\n在创建了Schema hibernate后更新错误日志\n
Aug 06, 2018 6:09:45 PM org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core {5.2.12.Final} Aug 06, 2018 6:09:45 PM org.hibernate.cfg.EnvironmentINFO: HHH000206: 未找到 hibernate.properties Aug 06, 2018 6:09:45 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final} Aug 06, 2018 6:09:46 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure WARN: HHH10001002: 使用Hibernate内置的连接池(非生产环境使用!) Aug 06, 2018 6:09:46 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001005: 使用驱动程序 [com.mysql.jdbc.Driver] 的URL [jdbc:mysql://localhost:3306/hibernate] Aug 06, 2018 6:09:46 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001001: 连接属性: {user=root, password=****} Aug 06, 2018 6:09:46 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001003: Autocommit模式: false Aug 06, 2018 6:09:46 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections INFO: HHH000115: Hibernate连接池大小: 20(最小=1) Mon Aug 06 18:09:46 IST 2018 WARN: 不推荐在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45+,5.6.26+和5.7.6+的要求,如果没有设置明确的选项,则必须默认建立SSL连接。为了符合现有不使用SSL的应用程序,verifyServerCertificate属性设置为'false'。您需要通过设置useSSL=false显式禁用SSL,或者设置useSSL=true并提供用于服务器证书验证的truststore。 Aug 06, 2018 6:09:47 PM org.hibernate.dialect.Dialect INFO: HHH000400: 使用方言: org.hibernate.dialect.MySQLDialect Hibernate: drop table if exists UserDetails Aug 06, 2018 6:09:47 PM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: 从JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@488eb7f2]获取的连接用于(非JTA)DDL执行时不在自动提交模式中;连接'本地事务'将被提交,并将连接设置为自动提交模式。 Hibernate: create table UserDetails (userId varchar(255) not null, userName varchar(255), primary key (userId)) type=MyISAM Aug 06, 2018 6:09:47 PM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: 从JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@fb9c7aa]获取的连接用于(非JTA)DDL执行时不在自动提交模式中;连接'本地事务'将被提交,并将连接设置为自动提交模式。 Aug 06, 2018 6:09:48 PM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget遇到异常接受命令: 通过JDBC Statement执行DDL时出错 org.hibernate.tool.schema.spi.CommandAcceptanceException: 通过JDBC Statement执行DDL时出错 at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:440) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:424) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:315) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:166) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:135) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:121) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:155) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) at org.hibernate.internal.SessionFactoryImpl. (SessionFactoryImpl.java:313) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:452) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:710) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726) at main.MainClass.main(MainClass.java:16) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=MyISAM' at line 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.Util.getInstance(Util.java:408) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2482) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2440) at com.mysql.jdbc.StatementImpl.executeInternal(StatementImpl.java:845) at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:745) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 13 more Aug 06, 2018 6:09:48 PM org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources INFO: HHH000476: 执行导入脚本 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@40cb698e' Hibernate: insert into UserDetails (userName, userId) values (?, ?) Aug 06, 2018 6:09:48 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL错误: 1146, SQL状态: 42S02 Aug 06, 2018 6:09:48 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: 表 'hibernate.userdetails' 不存在 Aug 06, 2018 6:09:48 PM org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl release INFO: HHH000010: 在释放批处理时仍然包含JDBC语句 Aug 06, 2018 6:09:48 PM org.hibernate.internal.ExceptionMapperStandardImpl mapManagedFlushFailure ERROR: HHH000346: 托管刷新期间出错[org.hibernate.exception.SQLGrammarException: could not execute statement] Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:149) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:164) at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1443) at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:493) at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3207) at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2413) at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:473) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:156) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(JdbcResourceLocalTransactionCoordinatorImpl.java:38) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:231) at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:68) at main.MainClass.main(MainClass.java:20) Caused by: 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.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:45) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3013) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3513) at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:89) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:589) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:463) at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337) at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39) at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1437) ... 9 more Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 表 'hibernate.userdetails' 不存在 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.Util.getInstance(Util.java:408) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871) at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1714) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2190) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2221) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2016) at com.mysql.jdbc.ConnectionImpl. (ConnectionImpl.java:776) at com.mysql.jdbc.JDBC4Connection. (JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330) at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38) ... 29 more
在使用Hibernate时,有时候会遇到一个问题,即在配置文件中设置了hibernate.hbm2ddl.auto = create
,但是却没有创建表。下面我们来分析一下出现这个问题的原因以及解决方法。
出现这个问题的原因可能有两个:配置文件中的属性设置有误;或者是数据库连接的问题。
首先,我们来检查配置文件中的属性设置。在配置文件中,我们需要将hibernate.hbm2ddl.auto
属性设置为create
,这样Hibernate会在启动时自动创建数据库表。但是有时候,我们可能会配置错误,导致这个属性没有生效。解决方法是检查配置文件中的属性设置,确保hibernate.hbm2ddl.auto
的值为create
。
其次,我们需要检查数据库连接是否正常。如果数据库连接有问题,Hibernate就无法创建表。解决方法是检查数据库连接的配置,确保数据库连接正确并且可以正常访问。
除了以上两个原因,还有可能是Hibernate版本不兼容导致的问题。在一些旧版本的Hibernate中,hibernate.hbm2ddl.auto
属性可能不支持create
值。解决方法是尝试将hibernate.orm_generation
属性设置为create
,这个属性可以在一些旧版本的Hibernate中使用。
总结一下,当配置文件中设置了hibernate.hbm2ddl.auto = create
但是没有创建表时,我们需要检查配置文件中的属性设置是否正确,检查数据库连接是否正常,并且尝试使用hibernate.orm_generation
属性来替代hibernate.hbm2ddl.auto
属性。
希望以上的分析和解决方法对你有帮助!
如果遇到以下问题,可以尝试以下解决方法。
问题描述:使用Hibernate时,设置hibernate.hbm2ddl.auto=create
,但是并没有创建出相应的表。
问题原因:可能是因为使用的MySQL版本为5或以上,而没有正确设置数据库方言(dialect)导致。
解决方法:将数据库方言(dialect)设置为org.hibernate.dialect.MySQL55Dialect
。
具体步骤如下:
1. 打开Hibernate配置文件。
2. 在配置文件中找到hibernate.dialect
的属性设置。
3. 将属性值设置为org.hibernate.dialect.MySQL55Dialect
。
4. 保存配置文件并重新运行程序。
这样的设置可以解决该问题。根据MySQL的版本不同,也可以尝试其他的方言设置,例如org.hibernate.dialect.MySQL5Dialect
或org.hibernate.dialect.MySQL57Dialect
。
希望以上解决方法可以帮助到有类似问题的用户。