2012-06-01 334 views
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

如果上面使用的API是类似原来的Hibernate限制API(我猜是的,因为这将是更合乎逻辑的),你刚才所用ge时,你应该使用le,反之亦然:

le("startDate", coTimeStamp) // startDate <= current date 
ge("endDate", coTimeStamp) // endDate >= current date 
+0

就像魅力一样...... @ JB Nizet ..谢谢...有我犯的错误:) – Will

相关问题