使用 cascade=CascadeType.TYPE_NAME 的目的是啥

Posted

技术标签:

【中文标题】使用 cascade=CascadeType.TYPE_NAME 的目的是啥【英文标题】: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)

私人用户用户;

我的问题是我们应该出于什么目的使用它?

谢谢你。

【问题讨论】:

谷歌搜索“休眠级联”应该为您提供一些答案... 【参考方案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)

【讨论】:

以上是关于使用 cascade=CascadeType.TYPE_NAME 的目的是啥的主要内容,如果未能解决你的问题,请参考以下文章

如何在一对一关系中使用 onDelete: 'CASCADE'

使用 Cascade.All 时出现 TransientObjectException

使用opencv训练目标检测模型基于cascade模型

使用 cascade=CascadeType.TYPE_NAME 的目的是啥

hibernate基础17:cascade 级联 与 Inverse 反转

hibernate基础17:cascade 级联 与 Inverse 反转