如何使用持久性克隆 java 对象

Posted

技术标签:

【中文标题】如何使用持久性克隆 java 对象【英文标题】:how to clone a jpa object using persistance 【发布时间】:2020-03-07 21:40:31 【问题描述】:

大家好,我在下面使用了以下代码

我有疑问

entityManager.detach( )

这只会删除 id 和持久性吗?

所以我一直在尝试使用此代码来获取结果,但所有数据都丢失了。

                Pdata= projDao.findById(id);
                setupdata=Pdata.getdata(); // all data is present
                entityManager.detach(setupdata);  // all data is gone
                projDao.save(setupdata);

要求

需要克隆jpa对象

【问题讨论】:

您认为“克隆 JPA 对象”与“克隆对象”有何不同? 我相信@Seelenvirtuose 会有示例 @1f1bc399 引用所有 JPA 对象,这些对象会抛出错误 我不明白你的评论。 @Seelenvirtuose 当你在 eclipse 中看到它以这种方式给出对象的引用 com.atpl.ival.models.Report.Child@1f1bc399 (这会阻止再次保存到 db )这个引用只会在创建一个新对象后被删除,我没有不想创建 这条评论以什么方式回答了我提出的问题? 【参考方案1】:

分离与克隆无关。

来自 API 文档:

void detach(Object entity)

从持久化上下文中移除给定的实体,导致 被管理实体变得分离。对 如果有实体(包括删除实体),将不会 同步到数据库。之前引用的实体 分离的实体将继续引用它。

在 JPA 中不支持克隆。 您不需要对实体进行任何特殊的克隆操作。只需克隆它而不使用但排除 ID。

【讨论】:

可以通过这个***.com/questions/61478262/…解决

以上是关于如何使用持久性克隆 java 对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kotlin 中克隆对象?

如何将 CoreData SQLite 支持的持久存储克隆到“内存中”?

JSON对象实现深度克隆

Java应用如何使用JPA进行对象关系映射和持久化

在 jQuery UI 中克隆可拖动对象时,如何将数据和事件传输到新元素?

关于JavaScript对象深度克隆