2012-06-01 335 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

相關問題