получить числовой тип данных c (10,2) от postgresql до Java .Math.BigDecimal в Java. SUM () функция Postgresql - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть столбец числового типа c (10,2) с именем «Значение» в таблице платежей в базе данных postgresql.

CREATE TABLE IF NOT EXISTS PAYMENT(
    PAYMENT_ID BIGINT NOT NULL DEFAULT nextval('payment_seq') PRIMARY KEY,
    DATE TIMESTAMP,
    PLACE VARCHAR(255),
    VALUE NUMERIC(10,2) NOT NULL,
    UTILISATEUR_ID BIGINT REFERENCES UTILISATEUR
);

Я хочу получить это значение цифры c по типу данных BigDecimal в Java. (dto)

import java.math.BigDecimal;

public interface UserSumByGroup {
    public String getFullName();
    public BigDecimal getSumOfValues();
}

Почему-то все время, когда возвращаемые значения для dto равны нулю, когда я выполняю в контроллере ..

...
List<UserSumByGroup> usersGroupSumPaymnt = userRepo.userGroupSumPaymt();
model.addAttribute("userGroupListSumPaymt", usersGroupSumPaymnt);
System.out.println("usersGroupSumPaymnt=> "+usersGroupSumPaymnt.get(0).getSumOfValues());
...

SQL Запрос:

SELECT usr.FULL_NAME as fullName, SUM(VALUE) as paymentCount 
FROM PAYMENT pym left join UTILISATEUR usr ON usr.utilisateur_id = pym.utilisateur_id 
WHERE MONTH(pym.date) = MONTH(CURRENT_DATE) 
AND YEAR(pym.date) = YEAR(CURRENT_DATE) 
AND pym.utilisateur_id IN (1,5) 
GROUP BY pym.utilisateur_id, usr.FULL_NAME;

Журнал консоли:

usersGroupSumPaymnt=> null

У вас есть идея, почему я всегда получаю значение Null ?.

Спасибо.

1 Ответ

0 голосов
/ 01 марта 2020

Чтобы соответствовать именам переменных между Spring JPA и Базой данных, имена атрибутов объекта dto должны совпадать с именем поля результата в запросе.

Имя запрос результата «paymentCount» должен совпадать с экземпляром dto «sumOfValues».

Итак, изменить:

SUM(VALUE) as paymentCount

По

SUM(VALUE) as sumOfValues
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...