Я очень новичок в Kotlin, и я не могу понять, как сделать что-то действительно простое; сгруппировать мои данные по полю имени. Я пытался с map и groupBy, используя один или оба, но я либо получаю сообщение об ошибке, либо данные в списке, и дубликаты отфильтровываются - что мне не нужно. Мне нужно сгруппировать дубликаты.
Кроме того, моя функция sql (в хранилище), которая находит записи в моей БД на основе введенной даты, имеет поля из двух разных классов, а это не оптимальный способ ведения дел, но я не знал, как еще объединить данные из двух таблиц. Я не против исправить это, если кто-то может сказать мне, как. Я получаю сообщение об ошибке: «Вывод типа не выполнен. Ожидаемое несоответствие типов. Требуется: список найденных строк карты?» Список>
ниже - мой код
TIA
мой репозиторий код
@Query("SELECT new XXX.report.model.ReportWithBatches(r.adlsPath, r.fileSize, r.lastUpdate, r.remoteFileName, b.dataPath , b.version, b.dataSource, r.recordCount, r.transferStatus, r.businessDate) FROM ReportOutput r INNER JOIN BatchInput b ON r.job.jobUuid = b.reportJob.jobUuid WHERE r.businessDate = ?1")
fun findAllByBusinessDateJoinBatches(date: LocalDate): List<ReportWithBatches>
}
мой сервисный код
fun findAllByCreationDateJoinBatches(date: LocalDate): List<ReportWithBatches> {
val reportBatchesList = reportRepository.findAllByBusinessDateJoinBatches(date)
return reportBatchesList.groupBy({it.adlsFullPath}, {it})
// .map { it.value }
// return reportBatchesList
// return reportBatchesList.map { rB ->
// ReportWithBatches(
// rB.adlsFullPath,
// rB.contentLength,
// rB.lastModified,
// rB.remoteFileName,
// rB.dataPath,
// rB.version,
// rB.source,
// rB.numberOfRecords,
// rB.transferStatus,
// rB.creationDate)
//
// }
}
код в моем контроллере
@GetMapping(value = ["/linkBatches/{today}"])
fun findAllByCreationDateJoinBatches(@PathVariable("today") @DateTimeFormat(pattern = "yyyyMMdd") date: LocalDate): List<ReportWithBatches> {
return eligibleService.findAllByCreationDateJoinBatches(date)
}
Мой результат такой - обратите внимание, что в результате есть только одна партия на запись :
[
{
"adlsFullPath": "part-00000-1399b2e0-5fa5-484b-91f1-9dec0601b885-c000.csv.gz",
"contentLength": 20,
"lastModified": "2020-02-07T16:50:16.132-05:00",
"remoteFileName": null,
"dataPath": "execution_v1/integration_date=2020-02-07/business_date=2020-02-07/batch_id=3/version=1",
"version": 1,
"source": "NETS",
"numberOfRecords": -1,
"transferStatus": "REPORT_CREATED",
"creationDate": "2020-02-07"
},
{
"adlsFullPath": "part-00007-1399b2e0-5fa5-484b-91f1-9dec0601b885-c000.csv.gz",
"contentLength": 1104,
"lastModified": "2020-02-07T16:50:16.133-05:00",
"remoteFileName": null,
"dataPath": "preprd/datalake/lake/nes/negotiation/execution_v1/integration_date=2020-02-07/business_date=2020-02-07/batch_id=3/version=1",
"version": 1,
"source": "NETS",
"numberOfRecords": -1,
"transferStatus": "REPORT_CREATED",
"creationDate": "2020-02-07"
},
{
"adlsFullPath": "part-00015-1399b2e0-5fa5-484b-91f1-9dec0601b885-c000.csv.gz",
"contentLength": 1057,
"lastModified": "2020-02-07T16:50:16.133-05:00",
"remoteFileName": null,
"dataPath": "preprd/datalake/lake/nes/negotiation/execution_v1/integration_date=2020-02-07/business_date=2020-02-07/batch_id=3/version=1",
"version": 1,
"source": "NETS",
"numberOfRecords": -1,
"transferStatus": "REPORT_CREATED",
"creationDate": "2020-02-07"
},
]
Я хотел бы получить что-то вроде этого:
[{
"adlsFullPath": "part-00000-1399b2e0-5fa5-484b-91f1-9dec0601b885-c000.csv.gz",
"contentLength": 20,
"lastModified": "2020-02-07T16:50:16.132-05:00",
"remoteFileName": null,
"numberOfRecords": -1,
"transferStatus": "REPORT_CREATED",
"creationDate": "2020-02-07",
"batches":{
{ "dataPath": "execution_v1/integration_date=2020-02-07/business_date=2020-02-07/batch_id=3/version=1",
"version": 1,
"source": "NETS",
},
{ "dataPath": "execution_v1/integration_date=2020-02-07/business_date=2020-02-07/batch_id=2/version=1",
"version": 1,
"source": "NETS",
},
{ "dataPath": "execution_v1/integration_date=2020-02-07/business_date=2020-02-07/batch_id=1/version=1",
"version": 1,
"source": "NETS",
}
},
{
"adlsFullPath": "part-00007-1399b2e0-5fa5-484b-91f1-9dec0601b885-c000.csv.gz",
"contentLength": 1104,
"lastModified": "2020-02-07T16:50:16.133-05:00",
"remoteFileName": null,
"numberOfRecords": -1,
"transferStatus": "REPORT_CREATED",
"creationDate": "2020-02-07",
"batches":{
{ "dataPath": "execution_v1/integration_date=2020-02-07/business_date=2020-02-07/batch_id=3/version=1",
"version": 1,
"source": "NETS",
},
{ "dataPath": "execution_v1/integration_date=2020-02-07/business_date=2020-02-07/batch_id=2/version=1",
"version": 1,
"source": "NETS",
},
{ "dataPath": "execution_v1/integration_date=2020-02-07/business_date=2020-02-07/batch_id=1/version=1",
"version": 1,
"source": "NETS",
}
},
{
"part-00015-1399b2e0-5fa5-484b-91f1-9dec0601b885-c000.csv.gz",
"contentLength": 1104,
"lastModified": "2020-02-07T16:50:16.133-05:00",
"remoteFileName": null,
"numberOfRecords": -1,
"transferStatus": "REPORT_CREATED",
"creationDate": "2020-02-07",
"batches":{
{ "dataPath": "execution_v1/integration_date=2020-02-07/business_date=2020-02-07/batch_id=3/version=1",
"version": 1,
"source": "NETS",
},
{ "dataPath": "execution_v1/integration_date=2020-02-07/business_date=2020-02-07/batch_id=2/version=1",
"version": 1,
"source": "NETS",
},
{ "dataPath": "execution_v1/integration_date=2020-02-07/business_date=2020-02-07/batch_id=1/version=1",
"version": 1,
"source": "NETS",
}
}
}]