Суть вопроса: из контроллера приходит айди юзера и период (количество месяцев), за который нужно узнать сумму трат.
Вот контроллер:
@GetMapping("{id}/spends")
public ResponseEntity<Map<String, Double>> getSpendsForUserInPeriod(@PathVariable(value="id") long id,
@RequestParam(value="period", required = false, defaultValue = "0") int period) {
return ResponseEntity.ok(recordService.getSpendsForUser(id, period));
}
В сервисе происходит составление мапы "месяц-сумма":
public Map<String, Double> getSpendsForUser(long id, int period) {
Map<String, Double> spends = new HashMap<>();
LocalDate startDate = LocalDate.now();
for(int i = period; i >= 0; i--) {
LocalDate endDate = startDate.minusMonths(i);
String month = String.valueOf(endDate.getMonth());
double amount = recordRepo.getSpendsForPeriod(id, endDate);
spends.put(month, amount);
}
return spends;
}
И в репке лежит запрос, который я и не могу сообразить (НЕ РАБОТАЕТ):
@Transactional
@Query(value="select sum(amount) from records where user_id =:id and date_trunc('month', date) = date_trunc('month', :end_date)", nativeQuery = true)
double getSpendsForPeriod(@Param("id") long id, @Param("end_date") LocalDate endDate);
Вот, что пишет консоль:
ОШИБКА: функция date_trunc(unknown, unknown) не уникальна
Подсказка: Не удалось выбрать лучшую кандидатуру функции. Возможно, вам следует добавить явные приведения типов.
Прошу знатоков помочь решить проблему. В базе формат ячейки даты просто date, не timestamp