У меня есть сущность JPA «Запрос», которой принадлежит список ответов (также сущности JPA). Вот как это определено в Request.java:
@OneToMany(cascade= CascadeType.ALL, mappedBy="request")
private List<Answer> answerList;
А в Answer.java:
@JoinColumn(name = "request", referencedColumnName="id")
@ManyToOne(optional = false)
private Request request;
В ходе выполнения программы в списке ответов запроса могут быть добавлены или удалены ответы, либо сам объект списка может быть заменен. Моя проблема заключается в следующем: когда я объединяю запрос с базой данных, объекты ответа, которые использовали , чтобы быть в списке, сохраняются в базе данных, то есть объекты ответа, на которые запрос больше не содержит ссылку (косвенно, через список) не удаляются.
Это не то поведение, которого я желаю, как будто я объединяю Запрос с базой данных, а затем извлекаю его снова, его Список ответов может не совпадать. Я делаю какую-то ошибку в программировании? Есть ли аннотация или настройка, которая обеспечит, чтобы ответы в базе данных были именно ответами в списке запроса?
Решение состоит в том, чтобы сохранить ссылки на исходный список ответов, а затем использовать EntityManager для удаления каждого старого ответа перед объединением запроса, но, похоже, должен быть более чистый способ.