Hibernate 一对一对多多对多注解cascade属性的总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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. 
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

 




以上是关于Hibernate 一对一对多多对多注解cascade属性的总结的主要内容,如果未能解决你的问题,请参考以下文章

2.2Hibernate用注解方式实现一对多多对多关系

2.2Hibernate用注解方式实现一对多多对多关系

hibernate多对多 一对多 及简单入门

3Hibernate一对一对多多对多对应关系

Mybatis注解开发:使用注解实现一对一一对多多对多查询

Hibernate入门—— 一对多多对多关系