saveOrUpdate()方法是通过对主键的值进行判断来决定是执行update还是insert,主键是否为null,如果为null,那么新增,否则更新。主键为空字符串会执行更新而不是新增。页面的form传回id不为null是空字符串,导致hibernate认为数据库中已有此数据,执行update语句.如果我们需要强制hibernate执行insert操作,可以把新增对象的id设置为null,如:
user.setId(null);
session.saveOrUpdate(user) //将执行insert语句