Исключение Java персистентности EntityNotFound для объекта со встроенным составным PK - PullRequest
0 голосов
/ 21 сентября 2018

У меня проблемы с сохранением Java.Я уже искал некоторые ответы и нашел такой, где проблема заключалась в том, что поле, которое могло быть нулевым, не было установлено в nullable = true.Однако, похоже, это не сработало для меня.

Я поменяю некоторые имена, но постараюсь объяснить это.

Это исключение: EJB Exception:;Вложенное исключение: javax.persistence.EntityNotFoundException: не удается найти PersistedObject с идентификатором PersistedObjectPK @ ec2736;Вложенное исключение: javax.persistence.EntityNotFoundException: Невозможно найти PersistedObject с идентификатором PersistedObjectPK @ ec2736

У самого PersistedObject есть первичный ключ, который определяется как встроенный объект с первичным ключом Compount.

@Entity
@Table(name = "DB_TABLE_NAME", schema = "SCHEMA")
public class PersistedObject implements Serializable {

    private static final long serialVersionUID = -5823302417440143578L;

    @EmbeddedId
    private PersistedObjectPK id;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "ID_POTATO", insertable = false, updatable = false)
    private AnotherPersistedObject anotherPersistedObject;


    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumns({
            @JoinColumn(name = "ID_CABBAGE", referencedColumnName = "ID_POTATO", insertable = false, updatable = false),
            @JoinColumn(name = "CT_CARROT", referencedColumnName = "CT_LETTUCE", insertable = false, updatable = false) })
    private OtherPersistedObject otherPersistedObject;

Класс PersistedObjectPK выглядит следующим образом:

@Embeddable
public class PersistedObjectPK implements Serializable {

    private static final long serialVersionUID = 4118584598667509460L;

    @Column(name = "ID_POTATO")
    private long idLaudo;

    @Column(name = "ID_CABBAGE")
    private long idTermoApreensao;

    @Column(name = "CT_CARROT")
    private long ctProduto;

Я уже отладил его, запрос работает нормально непосредственно в базе данных.Но я не могу найти причину этой ошибки.Ошибка происходит во время операции слияния, после того как система запросит сохранить изменения.

1 Ответ

0 голосов
/ 21 сентября 2018

Я обнаружил проблему.

Во время операции сохранения в базу данных.

        AnotherPersistedObject term;
            //Previously, it did not do thi, it tried saving with the list, then clean and re-insert it.
                    List<PersistedObject > persistedObjects = term.getList();
                    term.setList(null);
            //After this change, it is now working as excpeted
                    this.getGenericBO().save(AnotherPersistedObject.class, term, term.getId());
                    term.setList(persistedObjects);
                    deleteList(term);
                    saveList(term);
...