Hibernate / JPA проблема слияния (обновления) - PullRequest
0 голосов
/ 15 мая 2018

Я получаю одно исключение Hibernate из многих дней, и я не могу его решить. Может быть, кто-то может мне помочь?

У меня есть 3 спящих объекта. (КаинИнка, Пвв, Пвт).

kainInka-> pvv (один ко многим) pvv-> kainInka (много к одному)

pvv-> pvt (один ко многим) pvt-> pvv (много к одному)

Я определил следующие методы в моих классах сущностей:

1.kainInka

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY, mappedBy = "p301KainInkaId")
@OnDelete(action = OnDeleteAction.CASCADE)
public List<TP301KainInkaPvv> getKainInkaPvvs() {
    return this.kainInkaPvvs;
}
public void setKainInkaPvvs(final List<TP301KainInkaPvv> kainInkaPvvs) {
    this.kainInkaPvvs = kainInkaPvvs;
}

2.PVV класс сущности:

@ManyToOne(fetch = FetchType.LAZY)
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name = "T_P301_KAIN_INKA_ID", nullable = false, foreignKey = @ForeignKey(name = "FK_PVV4T_P301_KAIN_INKA_ID"))
public TP301KainInka getP301KainInkaId() {
    return p301KainInkaId;
}


@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY, mappedBy = "p301KainInkaPvvId")
@OnDelete(action = OnDeleteAction.CASCADE)
public List<TP301KainInkaPvt> getKainInkaPvts() {
    return this.kainInkaPvts;
}

public void setKainInkaPvts(final List<TP301KainInkaPvt> kainInkaPvts) {
    this.kainInkaPvts = kainInkaPvts;
}

3.Pvt класс сущности:

@ManyToOne(fetch = FetchType.LAZY)
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name = "T_P301_KAIN_INKA_PVV_ID", nullable = false, foreignKey = @ForeignKey(name = "FK_PVT4KAIN_INKA_PVV_ID"))
public TP301KainInkaPvv getP301KainInkaPvvId() {
    return p301KainInkaPvvId;
}

public void setP301KainInkaPvvId(TP301KainInkaPvv p301KainInkaPvvId) {
    this.p301KainInkaPvvId = p301KainInkaPvvId;
}

Первый раз, когда постоянный метод работает идеально.

Проблема в методе MERGE (kainInkaDao.merge (kainInkaObj);). Я хочу добавить новые объекты pvv в мой существующий объект kainInka и чтобы новые объекты pvv имели новые объекты pvt. Я вызываю метод слияния для родительского (kaininka) объекта. Так что я думаю, что это должно добавить новые записи в базе данных, верно?

Однако оно выдает исключение: Свойство not-null ссылается на временное значение - временный экземпляр должен быть сохранен перед текущей операцией: pvv.kainInkaId-> kainInka

Я что-то делаю не так или упускаю некоторые важные моменты?

Заранее большое спасибо !!

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