这个错误让我郁闷了好一段时间,现在终于搞懂了是什么缘故了!!!
update item之前 执行了item.setUserByBuyerId(new User()),此时的item是persistent状态,而userByBuyerId属性是一个transient状态的对象,并且cascade为默认的"none"(如果是all那么会试图创建一个新的User对象),所以无法更新item。
<--都是 spring 的 formbackingObject 惹的麻烦,害我debuge了好长时间,希望大家不要再范类似错误了。-->
解决方案:从数据库中获取entity.User实例,而不能用new。
说明下,我的Good FormBean中有两个属性是用到User的Id这个外键的,所以在改造Good FormBean构造方法时,如果有一个属性允许为空,则不能用new创建这个实例(列:item.setUserBySalerId(new User()),若userBySalerId属性允许为空,就不用这样写了,直接去掉就好了)