【问题标题】:retrieve numeric(10,2) data type from postgresql to Java.Math.BigDecimal in Java. SUM() function Postgresql从 postgresql 检索 numeric(10,2) 数据类型到 Java 中的 Java.Math.BigDecimal。 SUM() 函数 Postgresql
【发布时间】:2020-06-13 01:55:10
【问题描述】:

我在 postgresql 数据库的付款表中有一个名为“Value”的 numeric(10,2) 数据类型列。

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
);

我想通过 Java 中的 BigDecimal 数据类型检索该数值。 (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 吗?

谢谢。

【问题讨论】:

    标签: postgresql model-view-controller spring-data-jpa thymeleaf hibernate-mapping


    【解决方案1】:

    要对应Spring JPA和数据库之间的变量名,dto对象的属性名必须与查询中的结果字段名相同。

    结果查询“paymentCount”的名称需要与dto实例“sumOfValues”相同。

    所以,改变:

    SUM(VALUE) as paymentCount
    

    由

    SUM(VALUE) as sumOfValues
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-02
      • 1970-01-01
      • 2013-12-29
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多