Hibernate-3.6.0的save问题 求解
数据库表temp,只有2个字段:id 类型为Integer 为主键,但不是自动增长列;name 类型为varchar
实体类 Temp,以及对应的映射文件 Temp.hbm.xml
我用的是Spring-3.0.5 和 Hibernate-3.6.0
操作类如下:
public class TempDao extends HibernateDaoSupport {
public void doAdd(Temp t){
System.out.println(t.getId()+" ===== "+t.getName());
getHibernateTemplate().save(t);
}
}
如上代码,用Hibernate的save方法。但是报错:
1 ===== aaa
Hibernate: insert into PUBLIC.TEMP (ID, NAME) values (null, ?)
org.springframework.dao.DataIntegrityViolationException: could not insert: ...SQL [insert into PUBLIC.TEMP (ID, NAME) values (null, ?)]; constraint [null];
其意是ID列不能插入null值。但是 t.getId() 明显有值啊,并且打印出来为1。有高手解答么?多谢!
另外用update(t)方法更新数据库中的数据,一切正常的。
如果把字段id改为自动增长,插入数据时,只setName();然后save(t),也正常。