关于JPA Cascade和删除实体的问题

2024-04-08

我的数据模型中有两个名为 User 和 UserProfile 的实体。以下是它们的映射方式。

来自用户实体的代码:

@OneToOne(cascade=CascadeType.ALL)
@PrimaryKeyJoinColumn
public UserProfile getUserProfile(){
    return this.userProfile;
}
    
public void setUserProfile(UserProfile userProfile){
    this.userProfile=userProfile;
}

来自 UserProfile 实体的代码:

@OneToOne(mappedBy="userProfile",cascade=CascadeType.ALL)
public User getUser(){
    return this.user;
}

public void setUser(User user){
    this.user=user;
}

如你所见,我有一个CascadeType.ALL用于 UserProfile 中的用户属性。但是当我尝试删除 UserProfile 实体时,相应的 User 实体仍然保留。 (当我尝试删除 User 实体时,相应的 UserProfile 实体将被删除。)

这是我的问题:-

  • 仅当我在拥有关系的实体上指定级联时,级联才有效吗?

你的问题本身就是错误的,这就是所有混乱的根源。亚瑟的回答做得很好,但从评论中可以清楚地看出,困惑仍然存在,所以让我在这里尝试一下。

仅当我指定时级联才保持 他们在拥有的实体上 关系?

“级联”是您在关系的一端(或在双向的情况下可能是两端)指定的属性。它决定什么actions执行于that结束将被传播到other结尾。有许多不同类型 http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html#entity-mapping-association-cascadeJPA 中定义的那些操作和更 http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html#entity-hibspec-cascade在 Hibernate 扩展中定义。这个区别很重要——你应该只谈论specific行为正在传播,而不是一般的“级联”。

PERSIST、MERGE、REFRESH 正常传播(从声明的一端到另一端)。

然而,REMOVE 很棘手,因为它可能意味着两种不同的东西。如果你们之间有关系A and B并且您正在尝试删除A,您可以删除B在另一端或者您可以删除协会但离开B完好无损的。 Hibernate 对两者做了明确的区分——你可以声明 REMOVE (DELETE) 和DELETE_ORPHAN分别级联类型; JPA 规范没有。注意DELETE_ORPHAN不支持单值关系(OneToOne / ManyToOne)。

因此,REMOVE 的传播(单独或当它是 ALL 的一部分时)取决于关系是否有明确的所有者(单向总是有;如果使用映射则双向有)mappedBy如果通过映射则不会连接表)在这种情况下,它从所有者传播到拥有者,或者没有所有者,在这种情况下,它向任一方向传播,但没有DELETE_ORPHAN语义,除非明确指定。后者的典型例子是双向多对多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于JPA Cascade和删除实体的问题 的相关文章

  • JDK 文档是语言规范的一部分吗?

    只有一名官员Java语言规范 https docs oracle com javase specs jls se8 html index html所有 Java 实现都必须遵守它 API文档怎么样 所有Java实现都需要遵守吗这个版本 ht
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • 使用 Ant 将非代码资源添加到 jar 文件

    我正在将 java 应用程序打包成 jar 文件 我正在使用 ant 和 eclipse 我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件 xml 和 txt 文件 而不是与代码位于同一位置 我正在尝试使用includes
  • 是否有任何简单(且最新)的 Java 框架可用于在 Swing 应用程序中嵌入电影?

    我正在构建一个小型 Swing 应用程序 我想在其中嵌入一部电影 重要的是 这个应用程序是一个 WebStart 应用程序 并且该库应该能够打包在我启动的 jnlp 中 即 不依赖于本机库 我知道并尝试过 JMF 但我认为与其他框架相比 其
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 如何在代理后面安装 Eclipse Neon

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • Jackson XML ArrayList 输出具有两个包装器元素

    我在 Jackson 生成的 XML 输出中得到了两个包装器元素 我只想拥有一个 我有一个 Java bean Entity Table name CITIES JacksonXmlRootElement localName City pu
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 使用 Guice 优化注册表

    你好 今天思考了一种优化 有一些疑问 语境 我正在使用 Guice 2 进行 Java 开发 在我的网络应用程序中 我有一个转换器注册表 可以即时转换为某种类型 转换器描述如下 public class StringToBoolean im
  • 了解joda时间PeriodFormatter

    我以为我明白了 但显然我不明白 你能帮我通过这些单元测试吗 Test public void second assertEquals 00 00 01 OurDateTimeFormatter format 1000 Test public
  • 如何在 Spring 属性中进行算术运算?

  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • 是否可以使用 Java Guava 将函数应用于集合?

    我想使用 Guava 将函数应用于集合 地图等 基本上 我需要调整 a 的行和列的大小Table分别使所有行和列的大小相同 执行如下操作 Table
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin
  • 如何使用play框架上传多个文件?

    我在用play framework 2 1 2 使用java我正在创建视图来上传多个文件 我的代码在这里 form action routes upload up enctype gt multipart form data
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复

随机推荐

  • Web 服务器内置 Azure 应用服务

    背景 我正在托管一个静态 Web 应用程序 由 NUXTJS 在 Azure 应用服务上生成 现在我想通过以下方式配置更多内容web config比如为多个域设置 CORS 设置 但我找不到任何文档来确定 Azure 应用程序服务中集成 安
  • VB.NET 和 COM Interop 看似随机崩溃

    我正在考虑用 VB 6 重写一个全新的 VB NET 应用程序 该应用程序在终端服务下运行并大量使用 COM 由于某种原因 该应用程序存在随机奇怪之处 随机访问冲突错误 WinDbg 异常分析指向 dll 如 comdlg32 dll ms
  • Bigquery 如果字段存在

    简而言之 有没有办法在不存在的 BQ 字段中进行查询 并接收这些字段的 null 值 我有几乎同样的问题BigQuery IF 字段存在 THEN https stackoverflow com questions 32276601 big
  • PL/SQL 游标 for 循环

    我相信我需要一个循环游标来浏览表 test data 中的 street1 列 我有一个程序需要测试表中的每一行 这是我到目前为止所拥有的 cursor c1 is street1 from test data Begin If Instr
  • 如何调用Parent重写方法

    我有两个类 Parent 和 Child 从 Child 类 我调用父类重写方法 show 从父类 我调用另一个方法 display 但由于调用了 Child 方法 该方法也被重写 我想从show方法调用Parent方法display pu
  • jQuery - 翻转时更改另一个图像的 src

    我想知道是否有人可以帮助我 我有 2 张图像 如果有意义的话 我希望能够在翻转另一张图像时更改其中一张图像的 src 例如 我有 2 张图片 当有人将鼠标悬停在 imimage2 jpg 上时 我希望 imimage1 jpg 更改为 im
  • 我如何将长文本视图(字符串)显示到android的多个页面中

    我正在开发一个看起来像电子书阅读器 text pdf 文件等 的应用程序 我有一个巨大的文本 分为不同的章节或页面 现在的问题是如何将整个内容分成若干页并一页一页地显示 我怎么知道屏幕适合的字符数 取决于屏幕尺寸和字体大小 我完全不知道从哪
  • Javascript 加载、就绪、domready、DOMContentLoaded 事件

    我有点迷失在 启动 事件 有很多不同的事件 并且在 DOM 和各种框架 如 jQuery 中以不同的方式命名 所有可能的启动事件有哪些 它们有何不同 您能否显示一个简单的时间线来演示这些事件的触发顺序 ready JavaScript 提供
  • 逻辑运算的快捷方式

    我只是想知道 逻辑运算符 就像如果我想做类似的事情i i 10 我可以i 10 我搜索这个的原因是因为我有一个验证函数 它分为几个函数 以下是模拟 function f1 return Math ceil Math random 10 2
  • React JS 中适合父容器的多行文本

    我正在使用 Flexbox 布局 并尝试调整特定 div 中的文本大小以适合该 div 例如 如果我有如下代码 div div A really really really really long phrase here that will
  • 请注意,文档的某些部分可能包含文档检查器无法删除的个人信息

    I use Excel 2013 and Power View and SQL Server 2008 R2 创建我的后Data Source and my chart in Excel当我想要保存 Excel 文件时 我收到此消息 be
  • Elm - 检查值的类型

    是否存在检查 Elm 中变量类型的函数 例如 重复 numberTwo 2 returnType numberTwo number String 这样做的动机是当你使用Signal map n 通常会出现这样的情况 并非所有要应用的函数的参
  • 从外部访问 Leaflet.js GeoJson 功能

    我想从外部与传单驱动的地图的 GeoJson 覆盖层 多边形 进行交互L 的领域 但我似乎无法访问由L 互动包括 获取边界 我的特征 fitBounds 我的特征 设置样式 ETC 我可以看到 Leaflet 暴露了 L GeoJSON g
  • Nim 中的迭代器生成函数:在分配迭代器时起作用,在直接调用它时卡住

    我尝试创建一个创建迭代器的过程 如下所示 proc makeCDFrom start int iterator int result iterator int var i int start while i gt 0 echo i i yi
  • 将 Array 转换为原始方法来表达相同的结果,不使用 LINQ,仅使用 int。

    我的程序记录了四个房间在瓶子驱动器中收集的瓶子数量 当用户输入 quit 时 会显示每个房间收集的瓶子数量 并打印出拥有最多瓶子的房间 我使用了一个数组来跟踪房间号 如何更改方法而不是使用数组 我想启动 room1 room2 room3
  • Android Intent 启动应用程序的主要活动

    我正在尝试从 BroadcastReceiver 内部启动主要活动 我不想提供活动类名称 而是使用 android 的操作和类别来找出主要活动 这似乎不起作用 发送代码 Intent startIntent new Intent start
  • JavaScript 正则表达式文字在函数调用之间保持不变

    我有这段代码 function func1 text var pattern s S lt attrib if else if else end if search for end for s S gt g var result while
  • 如何将 actionPerformed( ActionEvent e ) 与多个按钮一起使用?

    所以我的作业要求创建一个顺序文件 我的教授给了我这个执行操作的简单代码 public void actionPerformed ActionEvent e FOR STATE AND COUNTRY String country Strin

  • 无法在 Windows 8 / 8.1 上运行

    Windows 8 8 1 最初问题出现在8中 所以我升级到8 1 但问题仍然存在 浏览器11 0 2 我正在使用一个名为 eTools 的产品 它用于生成和管理龙与地下城游戏的角色表 该信息存储在数据库文件中 但为了创建字符表 该软件使用
  • 关于JPA Cascade和删除实体的问题

    我的数据模型中有两个名为 User 和 UserProfile 的实体 以下是它们的映射方式 来自用户实体的代码 OneToOne cascade CascadeType ALL PrimaryKeyJoinColumn public Us