最近这两天,一直在搞hibernate,被 其中一个问题困扰了好久.在网上找了好久,一直都没有找到可行的方法,把jdk,jre,tomcat,装了拆,拆了装,可就是搞不好.实在是没有办法,又重新建了一个项目来测试,,从一点一滴开始试.所有的代码全部都手写,,,,可是问题依旧还在.

之所以一直没有找到解决办法,其实是自己的思维一直局限在一处,,,一直在想着hibernate只要把配置文件配置好,它就可以自己在数据库创建表结构,自己增删改查,相当的方便,可是自己 当时成功了,为什么这次却一而再再而三的失败呢....后来再想,要不创建一个数据库,然后再创建一个表.直接用hibernate插入数据试试....没想到竟然没有报错,当时那个心情啊....

现将错误代码贴上:

WARN: Table 'myapp.user' doesn't exist
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not extract ResultSetat org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:80)at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:91)at org.hibernate.id.IncrementGenerator.initializePreviousValueHolder(IncrementGenerator.java:132)at org.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:69)at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:118)at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209)at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194)at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:715)at org.hibernate.internal.SessionImpl.save(SessionImpl.java:707)at org.hibernate.internal.SessionImpl.save(SessionImpl.java:702)at com.huangchao.model.HibernateTest.main(HibernateTest.java:21)

  上面显示的错误提示是不能执行结果集,,,,,,,原因就是没有创建表,那当然就不能执行了.

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'myapp.user' doesn't exist
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:526)at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)at com.mysql.jdbc.Util.getInstance(Util.java:387)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:939)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625)at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551)at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861)at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1962)at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82)... 12 more

看到没有,这上面显示的就是表不存在....

经检查.....hibernate.cfg.xml中有一个配置是这样写的:

<property name="hibernate.hbm2dll">create</property>

一看,不对呀,如果要想自动建表的话那应该是这样的啊:

<property name="hibernate.hbm2ddl.auto">create</property>

原来是自己少打了.auto啊,千万要注意,.auto是不能少的,重要的事说三遍:

.auto是不能少

.auto是不能少

.auto是不能少

最后得出的结论是:

hibernate在没有手动为数据库创建特定的表的时候,且在配置文件里没有设置自动创建表,,这时就会报错.

完整代码如下:

Model:User.java

package com.huangchao.model;public class User {private int id ;private String username ;private String password ;public User(){}public User(String username,String password){this.username = username;this.password = password;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

Mapping:User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.huangchao.model.User" table="user">
<id name="id" type="int"><column name="id"></column><generator class="increment"></generator>
</id>
<property name="username"  type="java.lang.String"><column name="username" />
</property>
<property name="password"  type="java.lang.String"><column name="password" />
</property>
</class>
</hibernate-mapping>

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!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.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql:///myapp?characterEncoding=utf8</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">root</property><!-- 设定数据库言 --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 设置数据 库的SQL语句的格式--><property name="hibernate.show_sql">true</property><property name="hibernate.format_sql">true</property><property name="hibernate.hbm2ddl">create</property><mapping resource="com/huangchao/model/User.hbm.xml"/></session-factory>
</hibernate-configuration>

Test:HibernateTest.java

package com.huangchao.model;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;public class HibernateTest {public static void main(String[] args) {Configuration config = new Configuration().configure();ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);Session session = sessionFactory.openSession();User user = new User("zhoubin","33333");session.save(user);Transaction tx = session.beginTransaction();tx.commit();session.close();}}

转载于:https://www.cnblogs.com/sirab415/p/5751315.html

关于hibernate中提示can not create table ******相关推荐

  1. DataTables中提示:DataTables warning: table id=example - Cannot reinitialise DataTable.

    场景 在页面中有一个下拉框select,在select的change事件中,每此要根据选择的值的 不同进而在dataTables中显示不一样的值. 错误提示如图: 错误代码如下: $(document ...

  2. ireport修改jrxml中的sql语句_SQL中的create table与insert into语句

    学习交流,欢迎留言~~ 今天学习SQL的时候遇到了个小疑问,创建数据表肯定是用create table语句的,但是为什么后面总是跟随着insert into呢? 身为一个不弄白不舒服斯基,走起~~~ ...

  3. mysql select table_MySQL中的CREATE TABLE……SELECT语句

    在MySQL中,可使用CREATE TALBE. . .SELECT语句将查询结果转存到一个新表中. 创建新表 create table tabname(col1 type1 [not null] [ ...

  4. MySQL创建数据表(CREATE TABLE语句)

    在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性.引用完整性和域 ...

  5. 1、创建数据表(CREATE TABLE语句)

    在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性.引用完整性和域 ...

  6. mysql创建表参数_MySQL创建数据表(CREATE TABLE语句)

    在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性.引用完整性和域 ...

  7. mysql创建销售表_MySQL创建数据表(CREATE TABLE语句)

    在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性.引用完整性和域 ...

  8. MySQL创建、更改数据表(CREATE TABLE语句)

    < MySQL数据表的基本操作MySQL修改数据表 > 在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列 ...

  9. Mysql:ERROR 1005 (HY000): Can‘t create table ‘student.选课‘ (errno: 150)解决方法

    一.前面我按照正常操作一步步创建数据库和表,但总是会报错.. 复制各种错误去百度找答案,但是有时候有答案也不能解决出现的问题. 1.改变了数据库的字符集类型,但是依旧没有解决, 2.因为这个表里面还是 ...

最新文章

  1. 交叉表的简单实现2:使用前端程序实现
  2. ViewPager 详解(三)---PagerTabStrip与PagerTitleStrip添加标题栏的异同
  3. JAVA8常量池监控_深入探索Java常量池
  4. iOS 生日字符串转化年龄
  5. 第一批鸿蒙系统手机型号,鸿蒙2.0第一批机型名单正式披露!花粉却感叹:华为不够厚道!...
  6. EasyUI datagrid 分页保持选中状态
  7. Django CMS介绍(转载)
  8. Android之玩转MPAndroidChart让(折线图、柱形图、饼状图、散列图、雷达图)优雅的舞动
  9. AAC ADTS格式分析
  10. 【干货】深度学习中的线性代数---简明教程
  11. 一个超级简单的HTML模板框架源代码以及使用示例
  12. 如何在网页中播放FLV文件的代码
  13. oracle数据库中文乱码解决办法
  14. 重装系统显示缺少计算机所需的介质驱动程序,安装WIN7提示“缺少所需的CD/DVD驱动器设备驱动程序”的解决办法...
  15. 设计、经验和变革:做好IT战略规划的三要素
  16. APP消息推送(Push),竟然还有这么多你不知道的
  17. 微信输入法,终于来了。。。
  18. 达芬奇密码 第八十二章
  19. 数商云商业服务业SaaS管理系统:实现高效业务协作,助力企业完善数字化转型之路
  20. react学习之路(一)

热门文章

  1. ACCESS在哪输入SQL语句
  2. Python列表的切片
  3. 判断字符串中的括号是否匹配——c和c++实现
  4. Linux软件源apt,仓库,包的概念
  5. AbstractListView源码分析6
  6. 关于Fragment、Tabhost和FragmentPagerAdapter来实现导航栏的效果
  7. spring 项目中集成 Protocol Buffers 示例
  8. 浅谈数据仓库建设中的数据建模方法
  9. 状态很差时,就不要再继续做了。因为是徒劳,再就是过段时间或第二天再看,会豁然开朗,原来存在的疑难问题都迎刃而解。平时没事的时候要不断地给自己充电,让自己了解多方面知识。...
  10. [UE4]使用蓝图关闭对象的碰撞SetActorEnableCollision