小白学习Hibernate遇到的错误以及解决办法(GenerationTarget encountered exception accepting command : Error executing)

由于项目需要,这几天在学习Hibernate,遇到了一个小错误,但是让我解决了一天多…….

遇到问题

废话不多说,先上错误
这里写图片描述,

解决问题

翻遍google,百度,各种办法都试了,就是不行,最后对照一篇文章,逐字逐句敲下来,发现它的主键是Long,我的主键是String.然后我把主键类型改成Long运行成功了.

追根溯源

  1. 我们都知道,Mysql中主键自增只能是数值类型的.
  2. 在Hibernate中,用户自定义配置中
<?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 package="cn.itheima.domain" >

    <class name="User" table="user" >

        <id name="user_id"  >
            <generator class="native"></generator>
        </id>

        <property name="username" column="username" >
            <!--  <column name="cust_name" sql-type="varchar" ></column> -->
        </property>
        <property name="password" column="password" ></property>
    </class>
</hibernate-mapping>

就是这句配置:

<generator class="native"></generator>

这个属性代表主键生成策略.设置此属性之后必须将实体表中对应的主键设置成数值类型的,设置String就报错…
如果你想用的主键想用UUID等工具生成字符类型的,那么将gengrator的属性设置成

<generator class="assigned"></generator>

楼主温馨提醒 : 学习框架先要了解配置文件和基础的东西,不然出了错超级麻烦,总算解决了,开心…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值