Hibernate 一对一、一对多、多对多注解cascade属性的总结
生活随笔
收集整理的这篇文章主要介绍了
Hibernate 一对一、一对多、多对多注解cascade属性的总结
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
作用:是否级联被注解字段里面的对象。可选值:javax.persistence.CascadeType.PERSIST, MERGE, REMOVE, REFRESH, DETACH, ALL。可选其中的一个或多个,选一个时,花括号可用可不用。
| PERSIST | 级联session的persist操作。假设Student类和teachers字段的@ManyToMany注解上配置有cascade = {CascadeType.PERSIST},那么,当stu1对象set了一个teachers集合(这个集合里面的对象都是瞬态的),持久化这个stu1d对象时,这个集合里面的所有瞬态对象都会被级联持久化到数据库。 |
| MERGE | 级联merge操作。道理同上。 |
| REMOVE | 级联remove操作。道理同上。 |
| REFRESH | 级联refresh操作。道理同上。 |
| DETACH | 级联evict操作。道理同上。 |
| ALL | 级联以上所有操作。 |
或者:使用Hibernate自身的CascadeType.可选值:
| ALL Includes all types listed here. |
| DELETE Corresponds to the Hibernate native DELETE action. |
| DELETE_ORPHAN Deprecated. use @OneToOne(orphanRemoval=true) or @OneToMany(orphanRemoval=true) |
| DETACH Corresponds to CascadeType.DETACH. |
| EVICT Deprecated. use CascadeType.DETACH |
| LOCK Corresponds to the Hibernate native LOCK action. |
| MERGE Corresponds to CascadeType.MERGE. |
| PERSIST Corresponds to CascadeType.PERSIST. |
| REFRESH Corresponds to CascadeType.REFRESH. |
| REMOVE Corresponds to CascadeType.REMOVE. |
| REPLICATE Corresponds to the Hibernate native REPLICATE action. |
| SAVE_UPDATE Corresponds to the Hibernate native SAVE_UPDATE (direct reattachment) action. |
可见,除REPLICATE和SAVE_UPDATE是JPA.CascadeType里面没有的,其他的都一样。其中,DELETE对应JPA.CascadeType的REMOVE,DELETE_ORPHAN是不赞成的,DETACH和EVICT对应JPA.CascadeType的DETACH,作用是org.hibernate.Session的evict方法的作用。
REPLICATE:
SAVE_UPDATE:
JPA.CascadeType的所有枚举值,都对应了org.hibernate.Session的方法(DETACH对应evict)。关于Session的方法,参考另一边博客:http://www.cnblogs.com/565261641-fzh/p/6658747.html
转载于:https://www.cnblogs.com/fuzhihong0917/p/6658748.html
总结
以上是生活随笔为你收集整理的Hibernate 一对一、一对多、多对多注解cascade属性的总结的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: userdel、usermod、newg
- 下一篇: Oracle等待事件之Latch Fre