当前位置: 首页 > 面试题库 >

Java @ManyToOne JPA关联的CascadeType.ALL是什么意思

邓禄
2023-03-14
问题内容

我认为我误解了@ManyToOne关系中级联的含义。

案子:

public class User {

   @OneToMany(fetch = FetchType.EAGER)
   protected Set<Address> userAddresses;

}

public class Address {

   @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
   protected User addressOwner;

}

的含义是cascade = CascadeType.ALL什么?例如,如果我从数据库中删除某个地址,添加的事实会如何cascade = CascadeType.ALL影响我的数据(User我猜是)?


问题答案:

含义CascadeType.ALL是,持久性会将所有EntityManager操作(PERSIST, REMOVE, REFRESH, MERGE, DETACH)传播(层叠)到相关实体。

在你的情况下,似乎是个坏主意,因为删除Address会导致删除related User。由于用户可以具有多个地址,因此其他地址将成为孤立地址。但是,相反的情况(用注释User)将是有道理的-如果一个地址仅属于一个用户,则删除该用户可以安全地传播对属于该用户的所有地址的删除。

顺便说一句:你可能想向你添加一个mappedBy="addressOwner"属性,User以向持久性提供程序发出信号,表明连接列应位于ADDRESS表中。



 类似资料:
  • 我想我误解了关系上下文中级联的含义。 案例:

  • 我反转了一些Java代码,用Visual Paradigm得到了一个uml类图。该图显示了一端带有小黑圈的一些关联,这是我以前从未见过的。 形象 这绝对不是一个组成部分,也不是一个遏制!谁能给我解释一下,这是一种什么样的联系? 这是相关代码:

  • 本文向大家介绍Java里volatile关键字是什么意思,包括了Java里volatile关键字是什么意思的使用技巧和注意事项,需要的朋友参考一下 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。 Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机

  • 问题内容: 我发现此代码可在此处找到SO中的重复项。但我不明白这条线是什么意思 问题答案: 该运算符是Java中无符号的右移位运算符。它有效地将操作数除以右操作数的幂,或者仅在此处。 和之间的差异仅在移动负数时才会显示。如果运算符是a ,则运算符会将其移位到最高有效位,而无论如何都将移位。 更新: 让我们求平均值和()。我们可以轻松地进行数学运算: 现在,通过代码,涉及到以下这些位: 让我们将“转

  • 问题内容: 我看见某个地方 问题答案: Google是您的朋友- 抢手货 -您还可以先看看什么是序列化。 它将成员变量持久化为字节流时标记为不序列化。通过网络传输对象时,需要对该对象进行“序列化”。序列化将对象状态转换为串行字节。这些字节通过网络发送,并且从这些字节中重新创建对象。由java暂态关键字标记的成员变量不会被传输,它们是有意丢失的。 此处的示例,稍作修改(感谢@pgras):

  • 问题内容: 我已经看到了声明,接口和类 这是什么意思? 问题答案: 没有证据,我相信您在谈论Java的泛型支持… 泛型允许您抽象类型 在Java 5之前,很难提供能够支持多种不同类型的Objects的类而不必为每种特定情况编写代码,因此人们通常会这样做。 这导致在运行时做出许多困难的选择,您必须进行运行时检查以查看是否有可能将给定的Object强制转换为可用类型…例如 现在,这已经很明显了,但是如