Ниже приведена упрощенная версия объекта:
Код: Выделить всё
@Data
public class Question {
//@ToString.Exclude
@ManyToOne
private User user;
//@ToString.Exclude
@OneToMany(cascade = CascadeType.ALL,
orphanRemoval = true)
private List comments;
}
public class User {
@JsonIgnore
@OneToMany
private List questions;
}
public class Comment {
@ManyToOne
@JoinColumn
private Question question;
}
Код: Выделить всё
Question question = questionRepository.findById(id)
.orElseThrow(ResourceNotFoundException::new);
- Я понимаю, что ConcurrentModificationException в Java возникает, когда коллекция структурно изменяется во время итерации, как указано в документации Oracle Java API. >
- исключение исчезает, если я исключаю поля пользователя и комментариев из метода toString() или удаляю @ToString полностью.
- Похоже, это связано с тем, как toString() взаимодействует с отношениями или отложенной загрузкой во время отладки или журналирования.
- Проверил мой код на наличие явных одновременных изменений, но не обнаружил ни одного.
Почему это исключение возникает даже без явных одновременных изменений, и как я могу решить эту проблему, или эта проблема возникла из-за дизайна Entity?
Следует ли мне игнорировать эту проблему, если она возникает только в отладчике или средстве журнала?
Подробнее здесь: https://stackoverflow.com/questions/793 ... rent-modif
Мобильная версия