这个问题出现在要删除关系的一头时,如,要删除一个已经和Student有关系的Teacher,
当tx.commit()时,才会抛出这个异常。这时候一个在关系另外一头的Student对象中的Set或者是List中把
这个Teacher对象显示的remve掉,再Session.delete(这个Teacher)。这个是为了防止在Student端有cascade时把这个
Teacher对象再存回DB。所以,这个异常的只有在Student的关系定义中有cascade="..."
,而且没有像上面说的显示的解除关系时候才会出现。所以防止出现这个异常的的方法就是
1:在Student端不用cascade
2:或者是用了cascade的话,就显示的删除对象中的关系
3:在Teacher端用cascade
当tx.commit()时,才会抛出这个异常。这时候一个在关系另外一头的Student对象中的Set或者是List中把
这个Teacher对象显示的remve掉,再Session.delete(这个Teacher)。这个是为了防止在Student端有cascade时把这个
Teacher对象再存回DB。所以,这个异常的只有在Student的关系定义中有cascade="..."
,而且没有像上面说的显示的解除关系时候才会出现。所以防止出现这个异常的的方法就是
1:在Student端不用cascade
2:或者是用了cascade的话,就显示的删除对象中的关系
3:在Teacher端用cascade