如何使用持久性克隆 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 对象的主要内容,如果未能解决你的问题,请参考以下文章
如何将 CoreData SQLite 支持的持久存储克隆到“内存中”?