【问题标题】:JPA eclipselink sum of integer in JPQL are not integers?JPQL中的JPA eclipselink整数之和不是整数吗?
【发布时间】:2018-09-02 11:02:32
【问题描述】:

我正在使用带有 postrgresql 的 Eclipselink。

我的实体是

public class PedaneMovimenti extends EntityBaseGest implements Serializable {

   private static final long serialVersionUID = 1L;

   ... 

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

在我的 JPQL Named 查询中,我对列 importo 求和,然后在类的构造函数中使用这个值。

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

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)更改子查询,它工作正常,但如果我使用 sum,我就有例外。

那么,Integers 上的总和不是 Integers 还是 Long?

编辑:我也尝试过SELECT SUM(1),但我遇到了同样的错误。

【问题讨论】:

    标签: postgresql jpa eclipselink jpql


    【解决方案1】:

    “整数”的和是“长”!

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

    【讨论】:

      猜你喜欢
      • 2011-05-13
      • 1970-01-01
      • 2012-11-17
      • 2012-04-18
      • 2018-05-09
      • 2023-03-23
      • 1970-01-01
      • 2011-02-16
      • 2010-10-08
      相关资源
      最近更新 更多