我无法将+
运算符与resultado[0] + obj.nopersonas
一起使用,nopersonas
是一个整数。
fhinicio(blank:false, validator : { val, obj ->
def diff = groovy.time.TimeCategory.minus(obj.fhfinal, val)
def total = diff.hours*60 + diff.minutes
if (total < 15){
return "reserva.fhfinal.tiempo.min.label"
} else {
if (total > 60) {
return "reserva.fhfinal.tiempo.max.label"
} else {
def reserva = Reserva.createCriteria()
def resultado = reserva.list() {
or {
and {
ge('fhinicio', val)
le('fhinicio', obj.fhfinal)
}
and {
ge('fhfinal', val)
le('fhfinal', obj.fhfinal)
}
}
projections {
sum('nopersonas')
}
}
//this is not working
def aff = resultado[0] + obj.nopersonas
无法执行null + null。 Stacktrace如下:消息:无法执行null + null
答案 0 :(得分:0)
您需要解决几个问题:
obj.nopersonas
为空要修复条件查询,请在没有投影的情况下开始:
def reserva = Reserva.createCriteria()
def resultado = reserva.list {
or {
and {
ge('fhinicio', val)
le('fhinicio', obj.fhfinal)
}
and {
ge('fhfinal', val)
le('fhfinal', obj.fhfinal)
}
}
}
确保您获得Reserva
的相应实例。然后,添加投影,因为您需要单个值,请使用get()方法而不是list()。
def reserva = Reserva.createCriteria()
def resultado = reserva.get {
or {
and {
ge('fhinicio', val)
le('fhinicio', obj.fhfinal)
}
and {
ge('fhfinal', val)
le('fhfinal', obj.fhfinal)
}
}
projections {
sum('nopersonas')
}
}
def aff = resultado + obj.nopersonas
由于obj.nopersonas
为空,我假设该属性可以为空。如果该属性应该可以为空,那么您需要在验证器中考虑该属性。
答案 1 :(得分:0)
它正在发挥作用。
Integer variable_name = Integer.valueOf(resultado [0] .toString())
答案 2 :(得分:0)
您可以简单地处理空条件:
def aff = (resultado[0] ?: 0) + (obj.nopersonas ?: 0)