Отделенная сущность неправильно объединяется?

#java #hibernate #jpa

#java #переход в спящий режим #jpa

Вопрос:

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

 @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. Можете ли вы вставить SEDocumentListCategoryList сущность?

2. конечно, я отредактирую свой пост с этим:

3. Спасибо, не могли бы вы также добавить EntityObject ? 🙂

4. она довольно большая, у нее есть еще два атрибута: OID, который является первичным ключом, и NRVERSION, который является другим

Ответ №1:

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