У меня есть следующая комбинация:
Измерительный объект Measm, представляющий данные измерений, которые имеют ссылку на StatusProt, представляющий состояние, в котором находится текущее измерение
Код: Выделить всё
public class Measm extends BelongsToSample implements Serializable {
...
@OneToOne
@JoinColumn(name = "status", insertable = false, updatable = false)
private StatusProt statusProt;
...
Код: Выделить всё
public abstract class BelongsToMeasm extends BaseModel {
...
@ManyToOne
@JoinColumn(insertable = false, updatable = false)
private Measm measm;
...
Когда я пытаюсь удалить объект Measm
Код: Выделить всё
public void delete(Object object) {
em.remove(
em.contains(object)
? object : em.merge(object));
em.flush();
}
Код: Выделить всё
java.lang.IllegalStateException: org.hibernate.TransientObjectException: persistent instance references an unsaved transient instance of 'de.intevation.lada.model.lada.Measm' (save the transient instance before flushing)
Я предполагаю, что это связано со способом выполнения моделирования (возможно, отсутствуют такие аннотации, как каскад и т. д.)
Но почему это вообще сработало?
Я не нашел никаких изменений, которые давали бы подсказку к изменению поведения в отношении отношений.
Во-вторых: видите ли вы способ улучшить код, чтобы он работал с Hibernate 6.6.1?
Любая помощь приветствуется.
P.S.: Если вам нужно больше кода, не стесняйтесь спрашивать.
Подробнее здесь: https://stackoverflow.com/questions/791 ... l-throws-t