Field 'id' doesn't have a default value解决办法
学习hibernate时向Mysql数据库添一条数据是报错“Field 'id' doesn't have a default value”
代码如下:
package com.hibtest1;
import org.hibernate.*;
import com.hibtest1.entity.Users;
public class TestAddUser {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new TestAddUser().addUser();
}
private void addUser(){
//创建实体类(瞬态对象)
Users user=new Users();
user.setLoginName("zhangsan");
user.setLoginPwd("123456");
user.setName("张三");
user.setAddress("江苏南京");
user.setPhone("02512345678");
user.setMail("123@qq.com");
//获得Session实例
Session session=HibernateSessionFactory.getSession();
Transaction tx=null;
try {
//开始一个事务
tx=session.beginTransaction();
//调用save方法持久化user对象,之后user对象转变为持久态
session.save(user);
//提交事务,向数据库中插入一个新记录
tx.commit();
} catch (Exception e) {
if(tx!=null){
tx.rollback(); //事务回滚
}
e.printStackTrace();
}finally{
HibernateSessionFactory.closeSession(); //关闭session
//此时,user对象处于托管态
}
}
}
解决办法:
把.hbm.xml文件的设置问题,在里面把主键的属性改为:
<generator class="assigned"/>
这时又出现“<span style="color: rgb(51, 51, 51); font-family: SimSun;font-size:18px; line-height: 24px; white-space: pre-wrap; background-color: rgb(241, 254, 221);">ids for this class must be manually assigned before calling save(): com.hibtest1.entity.Users</span>”报错:
<span style="background-color: rgb(255, 255, 204);"><span style="font-size:18px;">解决办法:</span></span>
<span style="color: rgb(68, 68, 68); font-family: Simsun; line-height: 26px;">看看</span><a target=_blank href="http://www.111cn.net/list-55/" target="_blank" style="color: rgb(45, 100, 179); font-family: Simsun; line-height: 26px;">数据库</a><span style="color: rgb(68, 68, 68); font-family: Simsun; line-height: 26px;">表中的 id 是不是自增长类型,把<generator class="assigned" />中assigned改为increment</span><span style="font-size: 14px;">
</span>
<span style="color: rgb(68, 68, 68); font-family: Simsun; line-height: 26px;">
</span>
<span style="white-space: pre;"> </span>具体什么原因我也不太清楚,初学hibernate,对各种配置还不是太熟悉,希望有些帮助。
<span style="font-size:18px;"><span style="white-space: pre-wrap; background-color: rgb(239, 239, 239);">总结一下:</span></span>
<span style="color: rgb(68, 68, 68); font-family: Simsun; line-height: 26px;"><span style="font-size:18px;"><span style="color: rgb(51, 51, 51); font-family: 'comic sans ms', sans-serif; line-height: 25.2px; white-space: pre-wrap; background-color: rgb(239, 239, 239);"> 实就是缺乏对Hibernate的全面理解,没有完全掌握它的各种设置。因为当初学hibernate也是抱着"需求"学的,而不是正儿八经学习它的,没有完全理解各种设置就上手了。</span></span></span>