【发布时间】:2021-09-13 07:42:35
【问题描述】:
我尝试了什么:-
Select new fully.qualified.classname.ParkingEntry(p.arrivalDate, p.departureDate,
(case when p.chargedAmount is NULL then 0 else p.chargedAmount end) as chargedAmount)
from fully.qualified.classname.ParkingEntry p
实体停车入口:-
@Entity
class ParkingEntry {
Date arrivalDate;
Date departureDate;
BigDecimal chargedAmount;
ParkingEntry(Date arrivalDate, Date departureDate, BigDecimal chargedAmount) {
this.arrivalDate = arrivalDate;
this.departureDate = departureDate;
this.chargedAmount = chargedAmount;
}
...
}
我试图从实体ParkingEntry 中获取arrivalDate、departureDate 和chargedAmount 作为对象。我想确保如果chargedAmount 在表中是null,那么它应该将值返回为0。
上述查询有一些语法错误,因此无法正常工作。任何关于如何实现这一点的建议都将受到高度赞赏。
【问题讨论】:
-
你可以试试chargedAmount IS NULL 代替= 吗?
-
@DhavalGoti:这不太好。
-
1) new 需要完全限定的类名。 2) = NULL 是错误的,它必须是 IS NULL 3) 您从 ParkingEntry 中选择的不是实体
-
我在实际代码中使用了完全限定的类名,
ParkingEntry也是一个实体,我也尝试过is NULL,但没有成功。我认为这与在new ParkingEntry()构造函数中使用case语句有关。