我正在使用带有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
,但我也犯了同样的错误。
答案 0 :(得分:0)
"整数" s的总和是" Long" !
我已经改变了构造函数的顺序:首先是Long版本,然后是Integer版本,它可以工作。