测试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>
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- Android之获取手机上的图片和视频缩略图thumbnails
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 数据库链接字符串查询网站
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法