hibernate, cascade
Posted Kooing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate, cascade相关的知识,希望对你有一定的参考价值。
1,one to one, 单向, 谁加注解才能关联(dubug有时候背lazy影响
副表角度:
查:能查,主表不加注解
插入:不加级联插入有异常,只有在副表加cascade = CascadeType.Persist,所以只能说明加了oneToOne只能级联插入,
如果只是查出来再插入,或者知道了知道了主表的情况,就是有了外键的id, 这两次是冲突的,有detach异常
cascade = CascadeType.Persist需要删掉, 或改成merge, detach (错)还是不能改主表属性,能插入副表(外键自己写),不会有异常
把他看作一个dao一个session,不同dao查出来的对象不能跨session保存
delete: 不加不级联,加了cascade = CascadeType.remove级联, merge可
update:不加不更新主表,加了cascade = CascadeType.ALL级联,merge可
2,many to one 和上面相同
删除:cascade = CascadeType.ALL可以删得剩下副表的情况
3,one to many, many to one, 单单onetomany不知道怎么弄
只有双关联才能用, 关注在外键
insertable = false 插入了,但沒有关联
updatable = false不修改关联的,新插入一条
插入:不加只插入主表,插入的时候双方都要set,
删除时候,many方加了cascadeType=merge主表才能删,加了全删(之前不能删是因为外键原因)
更新:不加只更新自己,加了可以更新副表
只删除子类:
one-to-many的行为是强关联,的manyToOne改成cascadeType=merge, orphanRemoval = true也不加,
cascadeType=persist会触发少了外键
删除后修改同理
onetomany: cascade.persist 不起作用,cascade.merge行
多对多:
像两个one to many和在一起,cascable在两个中传播
多对多:https://blog.csdn.net/neweastsun/article/details/103216107
英文版本:https://www.baeldung.com/jpa-many-to-many
cascade: http://westerly-lzh.github.io/cn/2014/12/JPA-CascadeType-Explaining/
以上是关于hibernate, cascade的主要内容,如果未能解决你的问题,请参考以下文章
Spring和Hibernate的注解整合 hibernate3和hibernate4/5的区别