Hibernate中Javabean不能自动生成MySQL表结构问题

 

Hibernate中,在用Javabean自动生成MySQL的时候,在已经手动创建数据库的情况下,总是表结构生成失败,关键是还不报错,苦恼了半天,于是开始在寻找解决的方法。首先贴上我的代码。

Javabean

package com.itheima.domain; public class User { private Integer id; private String name; private Integer age; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }

映射文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">      <hibernate-mapping> <class name="com.itheima.domain.User" table="t_user"> <id name="id" column="id"><generator class="native"/></id> <property name="name" column="name" length="30"/> <property name="age" column="age"/> </class> </hibernate-mapping>

核心配置文件

<?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标签 --> <session-factory> <!-- 必须配置的参数。共有5个,4大参数和1个数据库方言 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///hibernate_day01</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">1234</property> <!-- 配置数据库的方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 可选配置的参数 --> <!-- 在控制台显示SQL语句 --> <property name="hibernate.show_sql">true</property> <!-- 把在控制台显示的SQL语句格式化输出 --> <property name="hibernate.format_sql">true</property> <!-- 生成数据库的表结构 create 穿件Javabean对应的表结构,删除原表,一般实际开发中不会使用 update 开发常用的值。如果没有表结构,创建表结构,存在表结构就不创建,会直接添加数据,如在Javabean里添加info的例子 --> <property name="hibernate.hbm2dd1.auto">update</property> <!-- 映射配置文件。引入映射的配置文件 --> <mapping resource="com/itheima/domain/Customer.hbm.xml"/> </session-factory> </hibernate-configuration> 以上是代码部分,测试类就不放了。

首先在网上找了几个可能的问题。
第一,<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>里边的问题,说是数据库引擎方言之类的问题,需要把代码改成<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>,我看了一下,自己原来写的就是这样的,所以问题没有出在这里。
第二,hibernate的版本兼容问题,猜测着不是,我用的是5,应该能兼容之前的例题版本。
第三,说是没有开启自动创建表,或者创建表时赋值错误,也就是下边这行代码	
<property name="hibernate.hbm2dd1.auto">update</property>,网上争议的地方时里边应该用update还是什么。我在这里是需要创建一个表结构,可以选用update或者是create,考虑到表后期的使用,肯定是使用update,所以问题不是出在update的值这里。
最后细心观察了一下自己的代码,终于还是找到了错误,比较狗血,错误还是出在这行代码,但是从文档里复制代码的时候复制错了,这样原来的属性是x行这样的
 
<property name="hibernate.hbm2dd1.auto">update</property>	//x
 
正确的代码应该是y行这样的
<property name="hibernate.hbm2ddl.auto">update</property>	//y

没有差别是不是?但是在eclipse里是有差别的。在eclipse里,x行代码中hbm2dd1的1显示是数字1,而正确的应该是y行,hbm2ddl中的l应该是小写的字母L。复制文档的时候就是把1而不是小写的L复制过来了,这才导致了不报错,但是还是不能成功创建表结构的后果。
 
 
 
 
 

顺便给新手推荐一个无意中发现的Java网站,感觉超级适合入门级的Java开发,

基础知识写的挺好,练手项目也很丰富很,基本都是文档形式指导,简明易懂,不像视频一样费时间

地址是http://how2j.cn?p=24192


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值