----USER表中有dept对象,每个user对应一个dept,user表中dept配置如下:
private SysDept sysDept;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "deptID", nullable = false)
public SysDept getSysDept() {
return this.sysDept;
}
----dept表中user内容配置如下:
private Set sysUsers = new HashSet(0);
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "sysDept")
public Set getSysUsers() {
return this.sysUsers;
}
----页面中是这样映射到action中的model(即user):
DAO层更新的方法
public void saveOrUpdate(Object entity) {
getHibernateTemplate().saveOrUpdate(entity);
}
ACTION中用了prepare(),在action中会首先根据id取得user对象,然后在把页面form里面的值赋给user。
可是更新user时,如果改变部门,就是FORM中“model.sysDept.id”的值改变,就会报
org.hibernate.HibernateException: identifier of an instance of com.sys.model.SysDept was altered from 6 to 8
好像就是说我把user从dept id=6的部门改到 id=8的部门时,hibernate还去试图更新dept表的id,所以报错了。
如何解决?