【发布时间】: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