您的位置:首页 > 移动开发 > Objective-C

deleted object would be re-saved by cascade

2014-02-12 22:58 295 查看
使用三大框架做project时遇到这个问题:

这是使用的三张表User Topic Reply

User对 Topic是一对多。

User对Reply是一对多。

Topic对Reply是一对多。

工程中我的目的是根据id删除topic(主题),结果就报了题目中所写的关于hibernate的错误。

解决的办法如下:

//根据id删除Topic(重点是:解除一切与所要删除对象的联系以及注意它对别的实体的影响)

public void deleteTopicById(Long id) {

Session session = factory.getCurrentSession();

Topic topic=(Topic) session.get(Topic.class,id);

//获取topic所属的User

User user=(User) session.get(User.class, topic.getUser().getId());

//将topic从自己所属的user中移除

user.getTopics().remove(topic);

//解除user和因为删除topic失去联系的reply关系

user.getReplys().removeAll(topic.getReplys());

//解除topic和reply的关系

/*topic.getReplys().removeAll(topic.getReplys());*/ //这句不写也可,可能因为它是最底层被级联的对象的原因

session.delete(topic);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐