我尝试做类似低但不正确的
def results = Transportadora.createCriteria().list(max: params.max, offset: params.offset ?: 0) {
or {
lt('validadeRange', reminderDate)
gtProperty('atualRange + 1000','fimRange')
}
ilike('tipo','Correios')
if (params['filter']) {
or {
ilike("firstName", "%${params.filter}%")
ilike("lastName", "%${params.filter}%")
}
}
if (params.order) {
order(params.sort, params.order)
}
}
我需要做什么才能获得' atualRange' (当前范围)列加起来为1000并比较它是否大于' fimRange' (范围结束)。
gtProperty('atualRange + 1000','fimRange')
但我在我的域名中遇到了另一个问题:' atualRange'是旋转为String
class Transportadora{
String nome
String codigo
String tipo
String via
Float limPesoVolume //limite de peso por volume
Float limDimVolume //limite de dimensões por volume
Float altLim //Altura limite
Float largLim //Largura limite
Float profLim //Profundidade limite
//static hasMany = [tiposEmbalagem: TipoEmbalagem]
static constraints = {
codigo(blank: false, unique: "tenantId")
nome(blank: false)
tipo(nullable:true, inList:["Cliente", "Motoboy", "Correios", "Transportadora"])
via(nullable:true, inList:["Rodoviária", "Aérea"], display:true)
tenantId(nullable: false, display: false)
idServicoCorreio(nullable:true)
codigoServico(nullable:true)
altLim(nullable:true)
largLim(nullable:true)
profLim(nullable:true)
inicioRange(nullable:true)
atualRange(nullable:true)
fimRange(nullable:true)
validadeRange(nullable:true)
cabecalhoEtiqueta(nullable:true)
}
public String toString() {
nome
}
//uso para correios
Long idServicoCorreio
//uso para correios
String codigoServico
//para uso do range dos correios
String cabecalhoEtiqueta
String inicioRange
String fimRange
String atualRange
Date validadeRange
}
有谁知道如何帮助我这样做?我是否必须在我的类中放置一个变量来操作值,然后才在Criteria列表中调用它们?
答案 0 :(得分:0)
sqlRestriction
应该做你想做的事:
def results = Transportadora.createCriteria().list() {
or {
lt('validadeRange', reminderDate)
sqlRestriction 'atualRange + 1000 > fimRange'
}
}
请参阅http://gorm.grails.org/latest/hibernate/manual/index.html#criteria