У меня есть сопоставление, как показано ниже, в одном из моих объектов. При попытке сохранить этот объект, если идентификатор scrMSgLine уже установлен, а тип каскада — PERSIST, я получил исключение «org.hibernate.PersistentObjectException: отдельный объект, переданный для сохранения: ScrMsgLine». Если я изменю тип каскада на MERGE, запись будет успешно сохранена.
Если идентификатор scrMSgLine равен нулю, а тип каскада — MERGE, тогда я получаю исключение «объект ссылается на несохраненный переходный экземпляр — сохраните переходный экземпляр перед очисткой».
Итак, какой тип каскада я должен использовать, что я делаю неправильно?
@ManyToOne(cascade = {CascadeType.PERSIST})
@JoinColumn(name = "MSG_LINE_ID")
@Where(clause = "DELETED_AT IS NULL")
public ScrMsgLine getScrMsgLine() {
return scrMsgLine;
}