如何使用cascade =“all,delete-orphan”制作hibernate集合的副本

2024-01-27

我正在尝试复制一个休眠实体 A,如下所示:

A a = (A) session.get(A.class, id);
session.evict(a);
a.setId(null);
session.save(a);

然而这不起作用,我得到以下异常:

org.hibernate.HibernateException: Don't change the reference to a collection with cascade="all-delete-orphan": com.test.A.B

可以安全地假设发生此错误是因为我在实体 A 中定义了 B 实体的集合:

<list name="B"  table="B" lazy="false" cascade="all,delete-orphan">
    <key column="A_ID" not-null="true"/>
    <index column="X"/>            
    <one-to-many class="com.test.B"/>
</list>

如何制作实体 A 的副本(包括其实体 B 的集合)而又不会让 hibernate 不满意?


如果您想复制现有实体 - 修改它 - 并将其另存为新实体,那么您需要深度复制该对象。您可以通过序列化然后反序列化该对象来深度复制该对象。

public Object deepCopy(Object input) {

    Object output = null;
    try {
        // Writes the object
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
        objectOutputStream.writeObject(input);

        // Reads the object
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
        ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
        output = objectInputStream.readObject();

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

如何使用cascade =“all,delete-orphan”制作hibernate集合的副本 的相关文章

  • 合并 2 个 .jks 信任库文件

    我正在使用启用了 SSL 的 Tomcat 并使用信任库进行客户端身份验证 我有两个 jks trustore 文件 第一个 我将其用于 PROD 环境 另一个用于 TEST 环境客户端证书 我在 Tomcat 上部署了 Web 应用程序
  • 如何将参数传递给Workmanager DoWork方法

    我想安排任务在 24 小时后从数据库中删除 public class WorkManager extends Worker public WorkManager NonNull Context context NonNull WorkerP
  • 如何创建仅接受字母数字字符的正则表达式? [复制]

    这个问题在这里已经有答案了 可能的重复 字母数字和下划线的正则表达式 https stackoverflow com questions 336210 regular expression for alphanumeric and unde
  • 如何从球衣服务端点发送实体列表?

    我正在从球衣服务器发送实体列表 在客户端 我试图获取这些实体列表 但它给了元帅例外 为什么它在元素名末尾添加 s 即 emps 而不是 emp XmlRootElement public class Emp Server side code
  • 图像在 3D 空间中绕 Y 轴旋转

    我有一个 BufferedImage 我想用 theta 角而不是仿射变换绕 Java 中的 Y 轴旋转图像 图片 旋转将如下图所示 矩形将是图像 我可以通过旋转图像的每个像素并绘制图像来做到这一点 因为我必须旋转很多图像 所以我认为这不是
  • Android Fabric Crashlytics 崩溃,初始化时未找到资源

    我从 google play 控制台收到了这份报告 看起来 Fabric 在启动时崩溃了 因为某些用户出现了资源未找到的异常 java lang RuntimeException at android app ActivityThread
  • 简单的Java程序插入USB热点后速度慢100倍

    我有以下Java程序 class Main public static void main String args throws java io IOException long start System nanoTime java io
  • 如何使用Gson将JSONArray转换为List?

    在我的 Android 项目中 我试图将收到的 JSONArray 转换为列表 在 的帮助下这个答案 https stackoverflow com questions 8371274 how to parse json array in
  • 字符串 a == 字符串 b 的规则 [重复]

    这个问题在这里已经有答案了 我试图了解字符串池的工作原理以及一个字符串等于另一个字符串的规则是什么 例如这个片段 public static void main String hi String s1 lol String s2 lol S
  • java多线程中“私有最终对象”锁定有什么用?

    java多线程中 私有最终对象 锁定有什么用 据我的理解 我认为要使一个类成为线程安全的 我们应该使用内部锁定 将所有方法标记为同步并使用 this 将它们锁定在对象的监视器上 或者我们可以用方法中的私有最终对象锁替换类的 this 上标记
  • 更改JavaFX TableView字体大小[重复]

    这个问题在这里已经有答案了 您好 我想在表视图列内的文本上设置字体 我如何用 Java 做到这一点 这是我的代码 感谢帮助 private final TableView
  • 用二进制数、常规数字和格雷编码填充矩阵

    我有一个包含 1 s 或 0 s 的矩阵 用于创建二进制数 其宽度为n 对于 n 2 和 n 3 它看起来像 00 000 01 001 10 010 11 011 100 101 110 111 等等 现在我正在使用以下代码来生成它 in
  • SFTP Java - 管道关闭 Jsch 异常

    我正在研究一种 java 方法 将文件从一个位置复制到另一个远程位置 我的代码如下 我尝试使用jsch 0 1 42 0 1 50 0 1 54 public static void processFiles ArrayList
  • 将序列化数据发送到 servlet 时出现 java.io.EOFException

    我正在尝试从 Java 本地应用程序上传一个包含文件到服务器的对象 我的计划是 在 tomcat 上运行的 servlet 将使用以下方法获取对象ObjectInputStream in the doGet方法 但我得到一个EOFExcep
  • 如何在列表视图中选择时启用视频序列自动播放?

    大家好 有人可以与我分享一下我如何编写我的 viewvideo java 类 以便它允许自动播放视频功能 自动排序在列表视图中播放所选视频的任务 从当前位置到最新录制的视频 按顺序直到最新的视频播放完毕 这类似于 YouTube 自动播放功
  • Java泛型类型参数中的问号是什么意思? [复制]

    这个问题在这里已经有答案了 这是取自斯坦福解析器附带的一些示例的一小段代码 我已经用 Java 进行了大约 4 年的开发 但从未对这种风格的代码应该表示什么有非常深入的理解 List
  • 为什么找不到 getservletcontext?

    我正在尝试使用getServletContext getRealPath 但我不断收到此错误 cannot find symbol symbol method getServletContext location interface jav
  • 使用 SimpleDateFormat、Java 进行错误的日期解析

    我需要使用日期模式 yyyy MM dd 解析输入字符串中的日期 如果日期采用任何其他格式 则抛出错误 这是我解析日期的代码 private void validateDate throws MyException Date parsedD
  • 不鼓励在Web应用程序中使用线程吗?

    我们与同事就在 Java 的 Web 应用程序中使用线程进行了激烈的讨论 他们的观点是 不建议在 Java Web 应用程序中使用线程 因为它们不受容器管理 一般来说 我对此表示同意 因为线程可能会干扰容器 但是 如果它不是 Java EE
  • CreateProcess error=206,运行 gwtCompile 时文件名或扩展名太长

    我的应用程序是一个 springboot gradle 应用程序 我的应用程序的一部分涉及使用 gradle 进行遗留 gwt 编译 它工作正常 但今天当我运行下面的 gradle 任务时 它显示 CreateProcess error 2

随机推荐

  • 对象数组的深拷贝

    我想使用构造函数制作对象数组的深层副本 public class PositionList private Position data new Position 0 public PositionList PositionList othe
  • 选择价格未变化的行

    假设您有一个类似的表 我使用 SQL Server 2008 没有审核日志 表很大 SecID Date Price 1 1 1 11 10 1 1 2 11 10 1 1 3 11 5 1 1 4 11 10 1 1 5 11 10 假设
  • Xcode,误删除.pch文件,可以恢复吗?

    据我了解 pch 文件负责预编译头文件 听起来像是可以重建或重新创建的东西 2个问题 Xcode 是否有类似于回收站的东西 可以撤消文件删除 有没有直接的方法来重建 pch 文件 对于 CocoaTouch iPhone 来说是 Prefi
  • IE8 CSS 浮动问题

    我确信这之前一定已经涵盖过 因为我确信我不是第一个这样做的人 但我找不到答案 我正在为一个创建阴影效果 div 使用重复的背景图像 在底部的两个角 我使用 9x5 像素的小图像 我将它们左右浮动 在 Firefox 和 Safari 中它们
  • 在工具栏右侧添加自定义视图

    我正在努力实现这一目标 计时器toolbar红色背景 I am trying to add customView in toolbar It always end s up being on extreme left just beside
  • Android重复资源错误

    我的项目编译得很好 直到我删除了一些 png 可绘制对象 并通过导航到将它们替换为矢量可绘制对象新增 gt 矢量资源 我现在得到了重复资源错误 这是我的 res 文件夹 以下是 Gradle 控制台中的错误消息 Execution fail
  • Environment.MachineName 被裁剪为 15 个字符 [重复]

    这个问题在这里已经有答案了 NET System Environment MachineName 中有一个属性 它读取由于与 Windows 98 兼容而被裁剪为 15 个字符的计算机名称 我如何获得完整 未裁剪 的姓名 我建议使用inte
  • MySQL存储引擎的困境

    我想在我的应用程序中使用两个 MySQL 数据库功能 第一个是全文搜索和交易 现在 这里的困境是我无法在一个存储引擎中获得此功能 我要么使用 MyIsam 具有全文搜索功能 要么使用 InnoDB 支持 TRANSACTION 功能 我不能
  • 能否让Unity始终不抛出Synchronization LockException?

    Unity 依赖注入容器存在一个众所周知的问题 即 SynchronizedLifetimeManager 通常会导致 Monitor Exit 方法抛出 SynchronizationLockException 然后该异常会被捕获并忽略
  • LINQ 查询的返回类型是什么?

    Is it IEnumerable
  • NetStream http 视频无法在 IOS 设备上播放

    我正在尝试在 iPad 上播放视频 我的代码如下 public function init RTMP void videoURL http rest iphone high mp4 vid new Video nc new NetConne
  • 如何将 Flutter 与 Genymotion 连接?

    我在使用 Genymotion 在 Android 模拟器上运行 Flutter 应用程序时遇到问题 启动模拟器后 我尝试过 flutter run 但没有成功 控制台显示 没有连接的设备 那么如何将 flutter 与 Genymotio
  • WPF UserControl 设计时间大小

    在 WPF 中创建 UserControl 时 我发现给它一些任意的高度和宽度值很方便 以便我可以在 Visual Studio 设计器中查看我的更改 但是 当我运行该控件时 我希望未定义高度和宽度 以便控件将展开以填充我放置它的任何容器
  • Google.com 和其他流量大的网站可以使用 Google 的 PSI API 获得“快速”排名吗?

    谷歌改变了它的PSI https developers google com speed pagespeed insights 的定义快速排名FCP低于 1000 毫秒从 90 到 75 来自 PSI 文档 为什么v4和v5中的FCP值不同
  • MRE 和 MDK 安装程序之间的区别

    关于Mono Mac安装程序 有MRE安装程序和MDK安装程序 http www go mono com mono downloads download html http www go mono com mono downloads do
  • 如何在python中读取json对象[重复]

    这个问题在这里已经有答案了 我有名为 panamaleaks50k json 的 json 文件 我想从 json 文件获取 text 字段 但它显示以下错误 JSON 对象必须是 str bytes 或 bytearray 而不是 Tex
  • Angular 2通过插值为ngClass添加值

    假设我在数组中有一些对象 让我们称该数组为 items 例如 title Title value true 我使用 ngFor 来显示它们 如下所示 h1 item title h1 现在假设我想根据 item value 是 true 还
  • Flutter无法运行,get_navigation & 主题错误

    我实际上正在尝试运行我的应用程序 但我遇到了这个错误 Running flutter pub get in riverpod stacked app Launching lib main dart on sdk gphone x86 arm
  • 如果 npm 测试失败,npm posttest 不会触发

    有没有办法在测试失败时触发 npm 的后测试 如果 package json 包含 scripts pretest echo pretest test some failed test or error posttest echo post
  • 如何使用cascade =“all,delete-orphan”制作hibernate集合的副本

    我正在尝试复制一个休眠实体 A 如下所示 A a A session get A class id session evict a a setId null session save a 然而这不起作用 我得到以下异常 org hibern