Как передать параметр даты в sql запрос в репозитории
Есть метод, он считывает строки из файла и записывает в базу:
Payment payment = new Payment();
String[] parts = line.split(";");
if (parts.length == 3) {
// Это файл
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
payment.setDate(dateFormat.parse(parts[0]));
payment.setAccountInfo(parts[1]);
payment.setAmount(new BigDecimal(StringUtils.prepareDecimalString(parts[2]))
.setScale(2, RoundingMode.HALF_UP));
//.divide(DIVISOR, RoundingMode.HALF_UP));
return payment;
В файле есть дата, лицевой, и сумма. Могут попасться суммы с одним лицевым и одной датой, их необходимо просуммировать и записать в базу одно значение с одной датой.
BigDecimal fund = account.getFund();
BigDecimal paymentAmount = payment.getAmount();
payment.setPersonalAccount(account);
account.setFund(fund.add(paymentAmount));
paymentDate = payment.getDate();
Optional<Payment> optionalPayment = paymentRepository.getPaymentForDate(account, paymentDate);
if (optionalPayment.isPresent()) {
Payment existingPayment = optionalPayment.get();
existingPayment.setAmount(existingPayment.getAmount().add(paymentAmount));
saveAccountAndPayment(existingPayment, account);
} else {
saveAccountAndPayment(payment, account);
}
Но почему-то если попадаются суммы с одной датой, то ничего не суммируется, а просто в базу пишется одна из них. Вот код запроса:
@Query("select p from Payment p where (p.personalAccount = ?1) and (p.date = ?2)")
Optional<Payment> getPaymentForDate(PersonalAccount account, Date date);