【发布时间】:2012-11-10 05:42:51
【问题描述】:
我想知道如何在投影 pronostico2.nropack.sum() 中设置 null 值...
new HibernateSubQuery().from(pronostico)
.where(pronostico.aeropuerto.eq(vuelo.aeropuertoDestino)
.and(pronostico.fechareg.before(fechaHoraSimulacion)))
.unique(pronostico.nropack.sum()).loe(aeropuerto.cappack.subtract(vuelo.numpack))))
当 pronostico 表在 DB 中为空时,pronostico.nropack.sum() 中返回的值为 null,但我希望为零。我尝试像这样合并: pronostico.nropack.sum().coalesce(0)
.. 但我没有得到任何答案。相反,我得到一个 Cast Exception: Cannot convert Long to Integer...
有人有答案吗?
PD:完整的查询是:
QVuelo vuelo = QVuelo.vuelo;
QAvion avion = QAvion.avion;
QTipoAvion tipoAvion = QTipoAvion.tipoAvion;
QAeropuerto aeropuerto = QAeropuerto.aeropuerto;
QPronostico pronostico = QPronostico.pronostico;
QPronostico pronostico2 = new QPronostico("pronostico2");
List<Vuelo> vuelos = consulta.from(vuelo)
.innerJoin(vuelo.avion, avion)
.innerJoin(avion.tipoAvion, tipoAvion)
.innerJoin(vuelo.aeropuertoDestino, aeropuerto)
.where(vuelo.aeropuertoOrigen.idaeropuerto.eq(idAeropuertoActual)
.and(vuelo.salidaest.after(fechaHoraSimulacion))
.and((vuelo.numpack.add(nroPaquetes).loe(tipoAvion.cappack)))
.and(new HibernateSubQuery().from(pronostico)
.where(pronostico.aeropuerto.eq(vuelo.aeropuertoDestino)
.and(pronostico.fechareg.before(fechaHoraSimulacion)))
.unique(pronostico.nropack.sum()).loe(aeropuerto.cappack.subtract(vuelo.numpack))))
.list(vuelo);
【问题讨论】:
-
你能在这里提交一个错误github.com/mysema/querydsl/issues
标签: java sql hibernate querydsl