@Data
@EqualsAndHashCode(exclude = {"suburbs", "upCities"})
class City {
@ManyToMany(mappedBy = "suburbs", fetch = FetchType.LAZY)
@JsonBackReference
private Set<City> uppers = new HashSet<>();
@ManyToMany(cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
}, fetch = FetchType.LAZY)
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@BatchSize(size = 5)
@JsonManagedReference
private Set<City> suburbs = new HashSet<>();
@Override
public int compareTo(City o) {
return publicId.compareTo(o.getId());
}
}
class CityService {
public List<City> findAll() {
return dao.findAll().stream().sorted().collect(Collectors.toList());
}
Метод findAll
по-прежнему загружает все ссылочные объекты (пригороды и верхушки), даже если я установил Lazy fetch.
В журнале гибернации есть запрос select suburbs
, но нет запроса select uppers
.
Понятия не имею, как это происходит.
Любая помощь будет оценена.