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

时间:2018-03-23 17:20:07

标签: postgresql jpa eclipselink jpql

我正在使用带有postrgresql的Eclipselink。

我的实体是

"/opt/mycommand myparam" | sed -ne '/searchstring/p;/searchstring2/q' | tail -1

在我的JPQL Named查询中,我对列importo求和,然后在类的costructor中使用此值。

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

public class PedaneMovimenti extends EntityBaseGest implements Serializable {

   private static final long serialVersionUID = 1L;

   ... 

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

JPQL查询

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

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

查询没问题,确实有效。 我在结构函数中有一个类型不匹配:

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

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

那么,整数上的总和不是整数还是长整数?

编辑:我也试过javax.persistence.PersistenceException: java.lang.IllegalArgumentException: argument type mismatch ,但我也犯了同样的错误。

1 个答案:

答案 0 :(得分:0)

"整数" s的总和是" Long" !

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