Я действительно запутался в состояниях сущностей. В общем, почему два запроса с разными параметрами фильтрации возвращают один и тот же список результатов.
У меня есть объект «Производитель»:
Это имеет @OneToMany
Отображение:
@OneToMany(mappedBy = "manufacturer", cascade = CascadeType.ALL)
private List cars;
Дополнительная сущность 'Car' выглядит следующим образом:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "manufacturer_dbid", nullable = false)
private Manufacturer manufacturer;
У меня есть репозиторий Spring, в котором есть запрос на выбор, для выбора производителей и соответствующих автомобилей определенного года:
@Query(value = "SELECT m FROM manufacturer m JOIN m.cars c WHERE c.year = ?1")
@EntityGraph(attributePath = {"cars"})
List<Manufacturer> findByYear(int year);
в моем сервисе ManufacturerService эта функция хранилища будет вызываться дважды:
public void compareYears(year1, year2)
{
List<Manufacturer> modelsYear1 = findManufacturerModels(year1);
List<Manufacturer> modelsYear2 = findManufacturerModels(year2);
}
private List<Manufacturer> findManufacturerModels(int year)
{
return this.manufacturerRepo.findByYear(int year);
}
Но именно здесь моя проблема. Первый вызов функции (findManufacturerModels (year1) возвращает правильный результат, но второй вызов функции (с другим годом) возвращает точно такой же результат.
В файле журнала весенней загрузки оба запроса будут зарегистрированы правильно. Первый с year1 и второй запрос с year2.
Возможно, я должен использовать detach()
здесь, но я понятия не имею, является ли это правильным способом решения таких проблем, или если есть любое разумное решение.