У меня есть служба SpringBoot со следующей функцией:
public class RankingService
{
public List<RankingDto> getIncrementralChanges(Double now, Double before)
{
List<RankingDto> rankingNow = createRanking(now);
List<RankingDto> rankingBefore = createRanking(before);
return getChanges(rankingNow, rankingBefore);
}
private List<RankingDto> createRanking(Double time)
{
return this.rankingRepo.findByTime(time)
.stream()
.map(e -> modelMapper.map(e, RankingDto.class))
.collect(Collectors.toList());
}
private List<RankingDto> getChanges(List<RankingDto> l1, List<RankingDto> l2)
{
...
}
}
Но моя проблема заключается в следующем:
ResultSet для «ratingNow» и «RankingBefore» точно такой же ! В файле журнала я заметил, что правильные значения будут связаны в запросе sql, поэтому я понятия не имею, почему наборы результатов идентичны.
Если я вызываю два запроса в базе данных вручную Я вижу различия в обоих результирующих наборах.
Мне кажется, что кэш или что-то в этом роде, даже если в файле журнала кажется, что оба запроса действительно вызваны.
Если я вызываю некоторые встроенные функции репозитория, например findById (10) и findById (11), результирующий набор отличается, но с моим пользовательским запросом это не так.
Вот запрос:
@Query(value = "SELECT r FROM Ranking JOIN r.team t JOIN t.starter s WHERE totalTime <= ?1")
@EntityGraph(attributePath = {"team", "team.starters"})
List<Ranking> findByTime(Double time);