Как передать параметр даты в 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);

Ответы (0 шт):