複数のフィルターに基づいて属性を照会し、条件を動的に作成したい
Domain Class
PatientAttr {
def name
def value
}
基準 建築基準法
if(filters.size() != 0 ){
def criteria = PatientAttr.createCriteria()
def results = criteria.list{
for (item in filters){
def name = item.name
def filter = item.filter
and{
eq 'name', name
if(filter[0] == "lt")
lt ('value', filter[1] as Double)
else if(filter[0] == "gt")
gt ('value', filter[1] as Double)
else
between ('value', filter[0] as Double, filter[1] as Double)
}
}
}
私が見つけたのは、リストの最後の「and」ステートメントのみが評価されているということです。条件ビルダーを使用すると、条件を動的に作成できますか?
上記のコードはこれと同等でなければなりません
def results = criteria.list{
and{
eq 'name', "Serum albumin (g/dL)"
gt 'value', 3.5 as Float
}
and{
eq 'name', "M-spike (g/dL)"
gt 'value', 2.3 as Float
}
}