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 插入了,但沒有关联

hibernate, cascade_第1张图片

 

 updatable = false不修改关联的,新插入一条

 

 

插入:不加只插入主表,插入的时候双方都要set,

hibernate, cascade_第2张图片

 删除时候,many方加了cascadeType=merge主表才能删,加了全删(之前不能删是因为外键原因)

更新:不加只更新自己,加了可以更新副表

只删除子类:

   one-to-many的行为是强关联,的manyToOne改成cascadeType=merge, orphanRemoval = true也不加, 

    cascadeType=persist会触发少了外键

 

 

 hibernate, cascade_第3张图片

 

 

 

 

 

 删除后修改同理

  onetomany: cascade.persist 不起作用,cascade.merge行

hibernate, cascade_第4张图片

 

多对多:

  像两个one to many和在一起,cascable在两个中传播

hibernate, cascade_第5张图片

 

 hibernate, cascade_第6张图片

 

 

 

 

多对多: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)