由于项目需要,这几天在学习Hibernate,遇到了一个小错误,但是让我解决了一天多…….
遇到问题
废话不多说,先上错误
,
解决问题
翻遍google,百度,各种办法都试了,就是不行,最后对照一篇文章,逐字逐句敲下来,发现它的主键是Long,我的主键是String.然后我把主键类型改成Long运行成功了.
追根溯源
- 我们都知道,Mysql中主键自增只能是数值类型的.
- 在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>
楼主温馨提醒 : 学习框架先要了解配置文件和基础的东西,不然出了错超级麻烦,总算解决了,开心…