Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 无法保存实体_Jpa_Jpa 2.0_Hsqldb - Fatal编程技术网

Jpa 无法保存实体

Jpa 无法保存实体,jpa,jpa-2.0,hsqldb,Jpa,Jpa 2.0,Hsqldb,我在项目中使用JPA2.0 我删除和实体,然后尝试保留相同的数据,但它抛出: org.hibernate.ObjectDeletedException:已删除的实例传递给merge 以下是我的表演: for(Education edu : educations) { entManager.remove(edu); Education tempEdu = new Education(); tempEdu.setCourse(edu.getCourse()); tem

我在项目中使用JPA2.0

我删除和实体,然后尝试保留相同的数据,但它抛出:

org.hibernate.ObjectDeletedException:已删除的实例传递给merge

以下是我的表演:

for(Education edu : educations) {
    entManager.remove(edu);
    Education tempEdu = new Education();
    tempEdu.setCourse(edu.getCourse());
    tempEdu.setInstitution(edu.getInstitution());
    tempEdu.setPlace(edu.getPlace());
    tempEdu.setFromDate(edu.getFromDate());
    tempEdu.setToDate(edu.getToDate());
    tempEdu.setMember(updatedMem);
    entManager.merge(tempEdu);
}
您能告诉我如何删除一个实体,然后将其数据持久保存在另一个实体中吗

问候,


Satya

我认为
remove
操作会级联到一些关系,您稍后将使用这些关系:

tempEdu.setCourse(edu.getCourse());
tempEdu.setInstitution(edu.getInstitution());
tempEdu.setPlace(edu.getPlace());
试着对这些行进行注释,看看它是否有效。如果是这样,则必须删除此关系上的层叠,或者像使用
tempEdu
一样创建此对象的副本


这就引出了axtavt已经提出的一个问题——您想要实现什么?最终,您将删除一堆对象,然后重新创建它们并保存回…

您在评论中发布的内容-如果在UI中删除/编辑/添加了任何实体,我将删除所有相关实体,然后重新创建来自UI的实体

维护两个列表,一个用于数据库中的实体,另一个用于UI

//---

dbEntries.removeAll(uiEntries);  // dbEntries will have entities to be deleted 

for(Education edu : dbEntries){

  em.remove(edu);  // Deleting entries not found in UI
}

for(Education edu : uiEntries){

  em.merge(edu);  // Updating existing entity else persisting new one
}

//---
通过这种方式,你可以实现你目前正在尝试的目标,如果我弄错了,请指出


在您的代码中,请尝试在删除edu之前合并tempEdu。

您到底想实现什么?级联功能在我的应用程序中不起作用,无法跟踪它为何会出现这种情况。所以我尝试的是:如果在UI中删除/编辑/添加任何实体,我将删除所有相关实体,然后重新创建来自UI的实体。通过这种方式,我将删除在UI中删除的,添加新的,并更新修改的。