Hibernate: неправильный результат от запроса - PullRequest
0 голосов
/ 03 февраля 2020

Я действительно запутался в состояниях сущностей. В общем, почему два запроса с разными параметрами фильтрации возвращают один и тот же список результатов.

У меня есть объект «Производитель»:

Это имеет @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() здесь, но я понятия не имею, является ли это правильным способом решения таких проблем, или если есть любое разумное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...