1

我正在 Grails 中做一些工作。我的域类(简单消息)由开始日期和结束日期组成。我只想在当前日期(现在)在开始日期和结束日期之间时向用户显示“消息”,即只有当今天在开始日期和结束日期之间时,用户才能看到消息。另请注意,我不想要任何与时间相关的计算。

这是域类:

class SimpleMessage
{
    String message
    Date startDate
    Date endDate
}

这是我的服务中定义的提取有效消息的方法:

def GetLiveMessages()
{
    def coTimeStamp = new Date().clearTime().toTimestamp()

    def c = SimpleMessage.createCriteria()

    def coCurrentMessages = c.list
    {
        ge("startDate", coTimeStamp) 
        le("endDate", coTimeStamp)
    }

    return coCurrentMessages
}

coCurrentMessages 总是返回大小为 0。我添加了有效日期的记录(开始日期 - 2012 年 6 月 1 日和结束日期 2012 年 6 月 2 日),但仍然返回 0(今天 - 2012 年 6 月 1 日)。令人惊讶的是,如果我删除第二个约束“le”,我会正确获得消息记录。

您的帮助将不胜感激。

4

1 回答 1

4

如果上面使用的 API 类似于本机 Hibernate Restrictions API(我猜是这样,因为它会更合乎逻辑),那么您只是ge在应该使用le的时候使用,反之亦然:

le("startDate", coTimeStamp) // startDate <= current date
ge("endDate", coTimeStamp) // endDate >= current date
于 2012-06-01T07:00:51.353 回答