JPA eclipselink JPQL 中的整数总和不是整数?

JPA eclipselink sum of integer in JPQL are not integers?

我正在使用 Eclipselink 和 postrgresql。

我的实体是

public class PedaneMovimenti extends EntityBaseGest implements Serializable {

   private static final long serialVersionUID = 1L;

   ... 

   @Column(name = "importo", nullable = false)
   private Integer importo = 0;
   ...

在我的 JPQL 命名查询中,我对列 importo 求和,然后在 class.

的构造函数中使用该值

我有两个用于 class 的构造函数用作投影:

public SaldoPedaneCliente(AnagraficaPGF anagrafica, TipoBancale tipo, Integer saldo);

public SaldoPedaneCliente(AnagraficaPGF anagrafica, TipoBancale tipo, Long saldo);

JPQL 查询是

SELECT new com.path.SaldoPedaneCliente(
                mov.mastro.anagrafica, 
                mov.tipobancale, 
                (
                COALESCE( 
                    SELECT SUM(m.importo) 
                     FROM PedaneMovimenti m 
                     WHERE m.mastro.anagrafica = mov.mastro.anagrafica AND m.tipobancale  = mov.tipobancale 
                      AND m.verso = com.bsssrl.bssstdgest.enums.VersoMovimento.IN
                , 0) 
                ))
                from PedaneMovimenti mov WHERE mov.mastro.anagrafica IS NOT NULL
                GROUP BY mov.mastro.anagrafica, mov.tipobancale

查询正常,有效。 我在构造函数中有一个类型不匹配:

javax.persistence.PersistenceException: java.lang.IllegalArgumentException: argument type mismatch

如果我用常量(例如 1)更改子查询,它工作正常,但如果我使用总和,我有例外。

那么,Integers 的求和不是 Integers 或 Long 吗?

编辑:我也试过 SELECT SUM(1) 但我有同样的错误。

"Integer"s 的总和是 "Long" !

我改变了构造函数的顺序:首先是 Long 版本,然后是 Integer 版本,它可以工作。