我正在使用適用於CrimeWatch組織的應用程序的數據存儲的JDO接口的Java App Engine for Java。我試圖實現的功能之一是一個離開日誌,人們報告他們將要離開很長一段時間(所以巡邏人員知道要留意房屋)。在應用程序中,我有一個AwayLogEntry對象,其中包含開始和結束日期,以及其他字段。使用App Engine數據存儲區查找重疊範圍
我需要向在特定時間段(通常是即將到來的一週)內巡邏誰在附近的人提供報告。我試圖建立一個報告,給定兩個日期查找所有與此範圍重疊的AwayLogEntries。
查詢我真的想用是
select * from AwayLogEntry where not(end < :reportStartDate || start > :reportEndDate)
但是NOT子句是不允許的(無法找到這個文件,但它拋出一個異常,以這種效果),也不能使用與inequality filters兩個字段,所以我不能直接查詢不同的重疊情況。
我現在的解決方法並不是很好 - 我打算做一個日常的cron作業,噹噹前日期大於條目時刪除(或者標記它們,如果我需要保留它們用於審覈)結束日期。然後我可以查詢開始日期小於報告結束日期的所有條目(如果我不刪除它們,則不標記)。這將允許合理地報告接下來X天的條目(這是他們通常需要的),但不允許任意日期範圍查詢(我猜他們會要求),除非我只是將所有條目拉入並用代碼進行過濾。
任何人都可以想到任何技巧來解決這個GAE JDO實現的限制嗎?
哇。如果我是盜賊,我會加入當地的犯罪觀察組織。他們不僅給我一個喧譁的地方清單,而且當沒有人會觀看時! – 2010-10-05 07:52:02
:)報告只提供給巡視員,而不是普通會員 - 但是,你必須相信你的巡視員。 – Andrew 2010-10-05 15:30:16