Отдельная сущность неправильно объединяется? - PullRequest
0 голосов
/ 08 марта 2019

Мне нужна помощь, мой код приведен ниже.

@Override
public SEDocumentListWidget clone() throws CloneNotSupportedException {
    final SEDocumentListWidget clone = (SEDocumentListWidget) super.clone();
    final Set<SEDocumentListCategoryList> listCopy = new HashSet<>(clone.getDocumentListCategoryList());

    SEEntityManager.flush();
    SEEntityManager.detach(listCopy);

    for (SEDocumentListCategoryList listItem: listCopy) {
        listItem.setOid(UUID.randomUUID().toString());
    }

    final Set<SEDocumentListCategoryList> listCopyMerged = SEEntityManager.getEntityManager().merge(listCopy);
    clone.setDocumentListCategoryList(listCopyMerged);
    return clone;
}

Когда я его запускаю, выдается следующее сообщение об ошибке:

Причина: org.hibernate.PersistentObjectException: отдельная сущность передана в persist: com.softexpert.dashboard.entity.SEDashboard

Это может быть что-то очень простое, любая помощь будет оценена, это также выглядит как специфическая проблема с этой строкой:

    final Set<SEDocumentListCategoryList> listCopyMerged = SEEntityManager.getEntityManager().merge(listCopy);

@ EDITДобавлена ​​сущность SEDocumentListCategoryList

package com.softexpert.dashboard.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

import com.softexpert.platform.annotation.Audit;
import com.softexpert.platform.artefacts.EntityObject;

/**
 * 
 * @author elia.melfior
 *
 */
@Entity
@Audit(dataChange = true, dataLoad = false)
@Table(name = "SEDOCUMENTLISTCATEGORYLIST")

public class SEDocumentListCategoryList extends EntityObject {

    private static final long serialVersionUID = 1L;
    private Integer cdCategory;

    @Column(name = "CDCATEGORY")
    public Integer getCdCategory() {
        return this.cdCategory;
    }

    public void setCdCategory(Integer cdCategory) {
        this.cdCategory = cdCategory;
    }
}

1 Ответ

2 голосов
/ 08 марта 2019

Глядя на ваш код, я думаю, что вы хотите скопировать постоянные объекты и сохранить их с новым идентификатором. В этом случае, я думаю, вы должны использовать persist() вместо merge() (который пытается обновить ваши отдельные объекты).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...