У меня есть сервисный метод, который создает, обновляет и удаляет объекты в одной транзакции.В теле запроса я получил массив с идентификаторами сущностей, которые я должен удалить.Объект A ссылается на объект C. Объект B также ссылается на объект C с отношением один-ко-многим.Когда я удаляю объект A, объект C также удаляется.Затем я выбираю объект B с указанным идентификатором.Если он относится к объекту CI, он все еще может видеть его, на который ссылается B. Есть ли способ получить объект B таким образом, чтобы объект C больше не ссылался на него?
Я использую весеннюю загрузку с помощью hibernate и postgresql10. Я пробовал уровень изоляции READ_UNCOMMITED с помощью метода service, который выбирает объекты, но безрезультатно.Любая помощь будет оценена.
@Entity
public class A extends AbstractNamedAuditable {
@OneToMany(mappedBy = "...", fetch = FetchType.EAGER, cascade = {CascadeType.REMOVE })
@Fetch(value = FetchMode.SUBSELECT)
private List<C> foo;
}
@Service
@Transactional
public class MyService {
public void doTheJob(long[] ids) {
A first = getById(ids[0]);
repo.delete(first);
A second = getById(ids[1]);
repo.delete(second);
// here I get
//org.springframework.dao.InvalidDataAccessApiUsageException: Removing a detached instance C.class
}
@Transactional(isolation = Isolation.READ_UNCOMMITTED)
protected A getById(long id) {
return repository.getById(id);
}
}