我有一个具有以下功能的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)
{
...
}
}
但是我的问题如下:
“ rankingNow”和“ 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);