您的位置:首页 > 产品设计 > UI/UE

测试hibernate时报错Field 'id' doesn't have a default value

2016-05-24 20:08 501 查看

Field 'id' doesn't have a default value解决办法

学习hibernate时向Mysql数据库添一条数据是报错“Field 'id' doesn't have a defaultvalue”代码如下: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 stubnew 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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate 数据库 mysql