【问题标题】:What is purpose of using cascade={CascadeType.TYPE_NAME}使用 cascade={CascadeType.TYPE_NAME} 的目的是什么
【发布时间】:2017-01-10 05:52:22
【问题描述】:
我正在通过 spring 项目,在一些模型类中有类型
cascade={CascadeType.ALL}
写入参数例如:,
@ManyToOne(fetch = FetchType.EAGER,cascade=CascadeType.ALL)
@JoinColumn(name="USER_ID", nullable=false)
私人用户用户;
我的问题是我们应该出于什么目的使用它?
谢谢你。
【问题讨论】:
标签:
java
spring
hibernate
cascade
【解决方案1】:
该属性表示与类(Outer class)的对象关联的所有(因为CascadeType.ALL)操作将对User类(Inner class)的关联对象执行。
例如:
@Entity
public class Group {
@ManyToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinColumn(name="USER_ID", nullable=false)
private User user`
如果您尝试从数据库中删除组,则会导致关联用户被删除。
Enum CascadeType 将帮助您指定要与关联用户执行的操作类型。
如果你想指定级联执行只是为了删除和持久化你必须做这样的事情:
@ManyToOne(cascade = {CascadeType.REMOVE, CascadeType.PERSIST}, fetch = FetchType.EAGER)