解决方法: 在hibernate映射文件对数据库表的描述中,在当前字段处加入insert="false"语句,这时hibernate在进行插入操作时,只会为那些有实值的字段赋值,而值为空白的字段就会使用数据库表中定义的默认值了。
举例说明,表person:
CREATE TABLE address ( i_id int(11) NOT NULL auto_increment, c_address varchar(100) NOT NULL default '中国', PRIMARY KEY (id))address.hbm.xml:
true 运行程序public regAddress(String a){ //传入的值a未在网页文本框里获得任何值(家庭地址)Address p = new Address ();p.setAddress(a);HiFactory.save(p);}此时hibernate生成的sql语句为insert into person(c_address) values('');数据库表结果为i_id c_address1 null修改address.hbm.xml为:
true 再次运行程序,此时hibernate生成的sql语句为 insert into address() values();