解决一个Hibernate的 unsaved-value问题散分200
v38 2007-02-07 06:21:30 做一个小东西,自已重新建了一个spring+hiberante+struts框架,在此框架中开发。
为提高开发速度,在struts 的Action form Bean 采用了LazyValidatorForm。
在Action 中用BeanUtil.copyproperits()来把值从form中加载到pojo对象中,
在保存这个pojo时,调用由spring托管的Hibernate底层的saveOrUpdate()方法来持久化。
这时问题来了,老是报错,无法通过。
通过调置断点,发现在用BeanUtil.copyproperits()拷贝的时候,pojo中的ID主键本是NULL的,被BeanUtil.copyproperits()设置为了0
当pojo传给DAO的saveOrUpdate()方法时,因其实ID为0,误认为此操作为update.
在hibernate 的mapping xml的<id> 中,加入unsaved-value=0
问题解决,且当id不为0为NULL的时候,也会被正常的判断为SAVE操作
特此散分~