作用:是否级联被注解字段里面的对象。可选值: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 |
EVICT
Deprecated. |
LOCK
Corresponds to the Hibernate native LOCK action. |
MERGE
Corresponds to |
PERSIST
Corresponds to |
REFRESH
Corresponds to |
REMOVE
Corresponds to |
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