Здравствуйте. Не получается сделать так, что при отвязывании от связанной сущностью она удалялась из базы. Связь один-к-одному. Если обнуляю ссылку на связанную сущность или кладу туда другой объект и обновляю главную сущность, то не удаляет старую связанную сущность. При null вообще ничего не делает. Если сеттю другую сущность, то в базе в таблице связанной сущности создаётся ещё одна запись. Но из-за связи 1-1 возникают ошибки при получении главной сущности по ид.
Главная сущность:
@Entity
@Table(name = "request", schema = "gr")
public class RequestEntity implements Serializable {
// some fields and getters and setters
@OneToOne(mappedBy = "requestByRequestId", orphanRemoval = true, cascade = {CascadeType.ALL})
public RejectionEntity getRejectionByRequestId() {
return rejectionByRequestId;
}
public void setRejectionByRequestId(RejectionEntity rejectionByRequestId) {
this.rejectionByRequestId = rejectionByRequestId;
}
}
Связанная сущность:
@Entity
@Table(name = "rejection", schema = "gr")
public class RejectionEntity implements Serializable {
// some fields and getters and setters
@JsonIgnore
@OneToOne
@JoinColumn(name = "REQUEST_ID", referencedColumnName = "REQUEST_ID", nullable = false)
public RequestEntity getRequestByRequestId() {
return requestByRequestId;
}
public void setRequestByRequestId(RequestEntity requestByRequestId) {
this.requestByRequestId = requestByRequestId;
}
}
То есть я хочу, чтобы при выполнение какого-то такого кода:
requestEntity.setRejectionByRequestId(null);
getSession().update(requestEntity);
из таблицы Rejection удалялась запись с ссылкой на соответствующую запись из таблицы Request. Сейчас этого не происходит.
Также, если выполнять какой-то такой код:
RejectionEntity rej = requestEntity.getRejectionByRequestId(); // != null
requestEntity.setRejectionByRequestId(new RejectionEntity());
getSession().update(requestEntity);
То в таблице Rejection создаётся ещё одна запись, с ссылкой на запись из таблицы Request. А старая запись, ссылающаяся на ту же запись таблицы Request, из таблицы Rejection не удаляется. Из-за этого потом, при получении сущности по ид, возникает ошибка, и сущность не возвращается.