我不能将+
运算符与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
最佳答案
您需要解决几个问题:
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
由于
obj.nopersonas
为null,因此我假设该属性为可空。如果该属性应为可为空,则需要在验证器中说明该属性。