今天学hibernate多对一双向关联要删除多的一方时,我在两个持久类中都设了cascade=CascadeType.ALL,由于只想要删除一条记录,而与之相关联的其他记录不想被删除,所以我用了以下方法(多个Person对应一个Address):
Person p1 = (Person)session.get(Person.class, 3);
p1.setAddress(null);
session.delete(p1);
但是会给我提示错误 org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)
经过几次修改实验解决了:
Person p1 = (Person)session.get(Person.class, 4);
p1.getAddress().getPersons().remove(p1);
p1.setAddress(null);
session.delete(p1);
参考链接: