Grails withCriteria如果声明?

时间:2015-02-17 15:57:45

标签: grails groovy gorm

是否可以在withCriteria块中使用If语句?我正在尝试执行以下操作:

allInfo = Scholarship.withCriteria {
  //eq('gpa', gpa)
  if (year != "All" || year != null) {
    println "grades"
    grades {
      idEq year
    }
  }
  if (county != "All" || county != null) {
    println "county"
    scholarshipCounties {
        eq('county.id', county)
    }
  }
  if (major != "All" || major != null) {
    println "major"
    majors {
      idEq major
    }
  }
  if (activity != "All" || activity != null) {
    println "activity"
    activities {
        idEq activity
    }
  }
  eq('specialTypeInd', special)
  eq('activeInd', "A")
  order("name", "asc")
}
当我正在测试时,年份,县,专业和活动都是“全部”。我也确定他们是Strings而不是其他东西。显然,当它甚至不能进入那些if语句时,它会打印出成绩,县等。那么问题是什么?感谢

1 个答案:

答案 0 :(得分:1)

您的布尔逻辑看起来很糟糕 - 像

这样的测试
if (year != "All" || year != null)

始终评估为true year的任何值 - 如果year为空,那么它不是&# 34;所有"反之亦然。如果您希望块触发任何非空year值,除了" All"然后它必须是&&而不是||