0
or {
   userTerm {
      and {
        le('startDate', endDate)
        ge('endDate', startDate)
      }
   }
   schoolTerm {
      and {
         le('startDate', endDate)
         ge('endDate', startDate)
      }
   }
}

“或”条件应该从 userTerm 或 schoolTerm 对象返回结果,但它不会返回预期结果。

我检查了个别条件,效果很好,但是当我同时使用 userTerm 和 schoolTerm 添加“或”条件时,它返回空列表。

这曾经在 grails 1.3.7 中运行良好,但在 2.2.4 中失败了可能是什么问题?请帮忙。

4

1 回答 1

0

在将 1.3.7 项目升级到 2.2.x 后,我一直在使用左连接解决这个问题。对于大型项目来说,这很烦人。我仍在调查是否有替代方案。

or {
   userTerm(CriteriaSpecification.LEFT_JOIN) {
      and {
        le('startDate', endDate)
        ge('endDate', startDate)
      }
   }
   schoolTerm(CriteriaSpecification.LEFT_JOIN) {
      and {
         le('startDate', endDate)
         ge('endDate', startDate)
      }
   }
}
于 2014-07-03T14:37:51.050 回答