Grails withCriteria,两个数据库列之间的值?

时间:2016-11-14 21:48:51

标签: sql grails criteria

如何测试某个值是否在我的两个数据库列之间?

我需要做这样的事情:

between(column1, column2, 'value')

或类似的东西:

or{
   and {
         ge("hora_inicio", evento.hora_inicio)
         le("hora_fim", evento.hora_inicio)
      }
   and {
         ge("hora_inicio", evento.hora_fim)
         le("hora_fim", evento.hora_fim)
       }
  }

任何想法?

谢谢!

1 个答案:

答案 0 :(得分:2)

没有选项可以检查两列是否在值之间。您将不得不进行两次单独的比较。您可以将一个数据库列与另一个数据库列进行比较,但它看起来并不像您想要的那样。请参阅此处的文档:http://docs.grails.org/latest/ref/Domain%20Classes/createCriteria.html

从你的第二个例子看,你需要找到所有在evento.hora_inicio和evento.hora_fim之间有一个开始时间的条目,或者在evento.hora_inicio和evento.hora_fim之间有一个订单时间的条目。

感觉这可以简化为在evento.hora_fim之前查找具有hora_inicio的所有条目并且在evento.hora_inicio之后具有hora_fim。这看起来像这样:

Event evento = getEventFromSomewhere()
Appointment.createCriteria().list{
    le 'hora_inicio', evento.hora_fim
    ge 'hora_fim', evento.hora_inicio
}