
Hibernate中的关联实体的删除
coding九月 24, 20171mins
Hibernate
在删除一个有关联的对象时,Hibernate的处理逻辑是这样的
解除所有自己维护的关系,通常是如果有别人引用自己,则把对方的外键设置为空, 这就要求外键不能有非空约束,否则会报外键约束错误;自己引用别人则无需处理。如果被解除关联的关联设置了orphanRemove属性,则接着删除关联的实体。
bash
UPDATE ASSOCIATION[DELETE ASSOCIATION]对于不属于自己维护的关联,查看是否有orphanRemove属性,如果有则直接删除关联的实体。(因为自己不负责维护,只能让关联的实体删除自己)
bash
DELETE ASSOCIATION查找设置了级联的关联,级联处理的时候会优先删除关联的对象。
bash
DELETE ASSOCIATION删除自身
bash
DELETE OWN
需要注意的是,如果实体自身不负责维护一个关联关系,那么Hibernate就不会就解除关联。这个时候,要么设置了orphanRemove来让框架不得不把关联的实体删除;或者设置了级联删除,让框架先删除关联的实体。否则,不删除关联的实体,最终直接删除自身,就会报外键被引用的错误。
评论
新的评论
上一篇
ribbon with eureka
Spring Cloud中使用ribbon(配合eureka)来访问service时,只需要使用 http://service-name/xxx 这样格式的URL即可访问对应的service的注册的服务,这具体是如何实现的呢? Netflix ribbon Netflix OS…
下一篇
关于HTTP的Content-Length头
Content-Length 实体的大小 Content-Length首部指示出报文实体主体的字节大小,这个大小是包含了所有内容编码的。比如对文本文件进行了gzip压缩的话,Content-Length首部就是压缩后的大小,而不是原始大小。 另外Content-Length首部…
