问题核心代码:
User类:
@ManyToOne(cascade=CascadeType.all)
@JoinColumn(name="rid")
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
Role类:
@OneToMany(cascade=CascadeType.ALL,mappedBy="role")
public Set<Users> getuSet() {
return uSet;
}
public void setuSet(Set<Users> uSet) {
this.uSet = uSet;
}
在执行save(user)的操作时,hibernate后台显示生成两条语句,一条是insert User的,另一条时update Role的,然后页面报错不存在此列;
问题原因:在user表中定义的级联定义为all造成的。
解决方法:改为如下@ManyToOne(cascade=CascadeType.REFRESH,optional=true) 即可。