1

我正在尝试简单的休眠示例。但是,我无法使用休眠创建数据库表。可能是什么问题?Java version1.7.Hibernate 3.6.4 我的hibernate.cfg.xml直接在src目录下:

false com.mysql.jdbc.Driver 密码 jdbc:mysql://localhost:3306/hibernatedb root org.hibernate.dialect.MySQLDialect true

    <mapping class="org.koushik.javabrains.dto.UserDetails"></mapping>
</session-factory>

我的主要课程:公共课程 HibernateTest {

public static void main(String[] args)

{

用户详细信息用户=新用户详细信息();

user.setUserId(1);

user.setUsername("First user");

SessionFactory sessionfactory=new Configuration().configure().buildSessionFactory();
Session session=sessionfactory.openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
}

}

UserDetails 618 [main] INFO org.hibernate.cfg.annotations.EntityBinder - 绑定实体 org.koushik.javabrains.dto.UserDetails 在表 UserDetails 693 [main] INFO org.hibernate.cfg.Configuration - 找不到休眠验证器:忽略 703 [main] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - 无法在类路径上找到 org.hibernate.search.event.FullTextIndexEventListener。未启用休眠搜索。715 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - 使用 Hibernate 内置连接池(不用于生产用途!) 715 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate 连接池大小:20 715 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - 自动提交模式:false 733 [main] INFO org.hibernate.connection。**} 1197 [main] INFO org.hibernate.dialect.Dialect - 使用方言:org.hibernate.dialect.MySQLDialect 1219 [main] INFO org.hibernate.cfg.SettingsFactory - 数据库 -> 名称:MySQL 版本:5.6.12-日志主要:5 次要:6 1219 [main] INFO org.hibernate.cfg.SettingsFactory - 驱动程序 -> 名称:MySQL 连接器 Java 版本:mysql-connector-java-5.1.25(修订:${bzr.revision-id} )主要:5 次要:1 1220 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - 使用默认事务策略(直接 JDBC 事务) 1222 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - 未配置 TransactionManagerLookup(在 JTA 环境中,不推荐使用读写或事务二级缓存)1222 [main] INFO org.hibernate.cfg。SettingsFactory - beforeCompletion() 期间自动刷新:禁用 1222 [main] INFO org.hibernate.cfg.SettingsFactory - 事务结束时自动会话关闭:禁用 1223 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC 批处理大小:15 1223 [main] INFO org.hibernate.cfg.SettingsFactory - 版本化数据的 JDBC 批量更新:禁用 1223 [main] INFO org.hibernate.cfg.SettingsFactory - 可滚动结果集:启用 1223 [main] INFO org.hibernate.cfg。 SettingsFactory - JDBC3 getGeneratedKeys():启用 1223 [main] INFO org.hibernate.cfg.SettingsFactory - 连接释放模式:自动 1224 [main] INFO org.hibernate.cfg.SettingsFactory - 最大外部连接获取深度:2 1224 [main] INFO org.hibernate.cfg.SettingsFactory - 默认批量获取大小:1 1225 [main] INFO org.hibernate.cfg.SettingsFactory - 生成带有注释的 SQL:禁用 1225 [main] INFO org.hibernate.cfg.SettingsFactory - 按主键排序 SQL 更新:禁用 1225 [main] INFO org.hibernate.cfg.SettingsFactory - 为批处理订购 SQL 插入:禁用 1225 [main] INFO org.hibernate .cfg.SettingsFactory - 查询翻译器:org.hibernate.hql.ast.ASTQueryTranslatorFactory 1228 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - 使用 ASTQueryTranslatorFactory 1228 [main] INFO org.hibernate.cfg.SettingsFactory - 查询语言替换: {} 1228 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL 严格遵守:禁用 1228 [main] INFO org.hibernate.cfg.SettingsFactory - 二级缓存:启用 1228 [main] INFO org.hibernate .cfg.SettingsFactory - 查询缓存:禁用 1228 [main] INFO org.hibernate.cfg.SettingsFactory - 缓存区域工厂:org.hibernate.cache.impl。NoCachingRegionFactory 1229 [main] INFO org.hibernate.cfg.SettingsFactory - 优化缓存以实现最小放置:禁用 1229 [main] INFO org.hibernate.cfg.SettingsFactory - 结构化二级缓存条目:禁用 1237 [main] INFO org.hibernate .cfg.SettingsFactory - 将所有 SQL 回显到标准输出 1238 [main] INFO org.hibernate.cfg.SettingsFactory - 统计信息:禁用 1238 [main] INFO org.hibernate.cfg.SettingsFactory - 已删除实体合成标识符回滚:禁用 1238 [main] INFO org.hibernate.cfg.SettingsFactory - 默认实体模式:pojo 1238 [main] INFO org.hibernate.cfg.SettingsFactory - 命名查询检查:启用 1238 [main] INFO org.hibernate.cfg.SettingsFactory - 检查核心中的 Nullability (应在 Bean Validation 开启时禁用):启用 1270 [main] INFO org.hibernate.impl。SessionFactoryImpl - 构建会话工厂 1278 [main] INFO org.hibernate.type.BasicTypeRegistry - 类型注册 [materialized_clob] 覆盖以前:org.hibernate.type.MaterializedClobType@8247262 1278 [main] INFO org.hibernate.type.BasicTypeRegistry - 类型注册[characters_clob] 覆盖以前:org.hibernate.type.PrimitiveCharacterArrayClobType@10d1841b 1279 [main] INFO org.hibernate.type.BasicTypeRegistry - 类型注册 [clob] 覆盖以前:org.hibernate.type.ClobType@2b38113d 1279 [main] INFO org.hibernate.type.BasicTypeRegistry - 类型注册 [java.sql.Clob] 覆盖以前:org.hibernate.type.ClobType@2b38113d 1279 [main] INFO org.hibernate.type.BasicTypeRegistry - 类型注册 [materialized_blob] 覆盖以前: org.hibernate.type.MaterializedBlobType@6df3d1f5 1279 [main] 信息组织。hibernate.type.BasicTypeRegistry - 类型注册 [blob] 覆盖以前:org.hibernate.type.BlobType@225d6438 1279 [main] INFO org.hibernate.type.BasicTypeRegistry - 类型注册 [java.sql.Blob] 覆盖以前:org. hibernate.type.BlobType@225d6438 1279 [main] INFO org.hibernate.type.BasicTypeRegistry - 类型注册 [wrapper_materialized_blob] 覆盖以前:org.hibernate.type.WrappedMaterializedBlobType@215eaa28 1279 [main] INFO org.hibernate.type.BasicTypeRegistry -类型注册 [wrapper_characters_clob] 覆盖以前:org.hibernate.type.CharacterArrayClobType@4df53935 1569 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - 没有将工厂绑定到 JNDI,没有配置 JNDI 名称休眠:插入到 UserDetails(用户名,用户 ID)值(?,?)1702 [main] WARN org.hibernate.util。JDBCExceptionReporter - SQL 错误:1146,SQLState:42S02 1702 [main] 错误 org.hibernate.util.JDBCExceptionReporter - 表 'hibernatedb.userdetails' 不存在 线程“main”中的异常 org.hibernate.exception.SQLGrammarException:无法执行在 org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 在 org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher. java:275) 在 org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268) 在 org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184) 在 org.hibernate.event.def.AbstractFlushingEventListener.performExecutions (AbstractFlushingEventListener.java:321) 在 org.hibernate.event.def。DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51) 在 org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216) 在 org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383) 在 org.hibernate.transaction org.koushik.hibernate.HibernateTest.main(HibernateTest.java:25) 处的 .JDBCTransaction.commit(JDBCTransaction.java:133) 原因:java.sql.BatchUpdateException:com 中不存在表“hibernatedb.userdetails”。 mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2054) 在 com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1467) 在 org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70) 在 org .hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268) ... 8 更多原因:com.mysql.jdbc.exceptions.jdbc4。MySQLSyntaxErrorException:sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 中不存在表“hibernatedb.userdetails”在 java .lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at com.mysql .jdbc.SQLError.createSQLException(SQLError.java:1054) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) 在 com. mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) 在 com.mysql.jdbc。ConnectionImpl.execSQL(ConnectionImpl.java:2815) 在 com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) 在 com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458) 在 com.mysql.jdbc .PreparedStatement.executeBatchSerially(PreparedStatement.java:2006) ... 还有 11 个

请帮我解决这个问题。谢谢。

4

1 回答 1

2

Hibernate 读取和写入表,但不创建它们(默认情况下)。如果您希望 Hibernate 创建您的表,那么您必须将hibernate.hbm2ddl.auto配置文件中的属性设置为记录的值之一

hibernate.hbm2ddl.auto 在创建 SessionFactory 时自动验证模式 DDL 或将其导出到数据库。使用 create-drop,当 SessionFactory 显式关闭时,数据库模式将被删除。

例如验证 | 更新 | 创建 | 创建删除

于 2013-07-11T22:00:31.027 回答