我和我的团队已经在这个问题上纠缠了几个星期了,我们不知道我们遗漏了什么。我们正在使用angular和spring Boot 、java hib和sql数据库。目前我们从一个连接到爬虫的数据库中获取数据。另一个数据库已经准备好了,用于我们的应用程序数据。
现在......我们有了一个表,该表应该只显示Crawler数据库中最新的条目。一个条目看起来如下所示:
id | type | number | version | ...
12 1 200 2015
类型和编号指示它所涉及的记录。这意味着可能存在另一个编号200,类型为1,但版本为2021。
目前,我们通过以下查询获取每种类型的所有记录:
// code
QRecord standard = QRecord.record;
BooleanBuilder query = new BooleanBuilder();
query.and(record.type.eq(type));
// code
我们还尝试使用queryFactory:
// code
queryFactory.selectFrom(record).where((record.type(type).collect(Collectors.toList()))
JPAExpressions.select(record.version.max()).from(record)))).fetch()
// code
或者把这两个人混在一起,比较一下最后的名单:
BooleanBuilder typeQuery = new BooleanBuilder();
typeQuery.and(record.type.eq(type).collect(Collectors.toList()))
List<Record> typeRecords = recordRepository.findAll(query, p).stream().map(x -> RecordMapper.mapRecord(x)).collect(Collectors.toList())
List<Record> newestRecords = queryFactory.selectFrom(record)
.where(record.version.eq(JPAExpressions.select(record.version.max())
.from(record))).fetch().stream().map(x -> RecordMapper.mapRecord(x))
.collect(Collectors.toList()));
我们认为我们可能需要一个group by,但我们在这方面没有取得任何进展。我们找不到一个解决方案,我们没有重复的数据,只有最新的版本。请帮助。
我可以提供更多的信息和代码,如果需要的话。
1条答案
按热度按时间oaxa6hgo1#
您希望消除所有存在更高版本号的ID: