2013-01-08 64 views
0

是否可以在JDOQL中執行日期查詢而不使用Google App Engine上的參數化查詢。在Google App Engine上可以使用JDOQL Date而不使用參數化查詢?

我想寫一些看起來像這樣的泛型代碼,其中標準只是一個字符串,我希望能夠指定任何東西 - 這段代碼不需要知道很多關於底層數據。

Query query = pm.newQuery(tClass); 
     if (criteria!=null) { 
      query.setFilter(criteria); 
     } 

標準可以是 「開始日期= 'someproperlyformatteddatetime'」

感謝您的建議。

回答

1

當然,GAE JDO queries支持JDOQL。您可以簡單地執行如下操作:q.setFilter("height <= 200")q.setFilter("name == 'Smith'"),您可以在其中以編程方式組裝JDOQL過濾器字符串。唯一的缺點是你需要知道參數的類型(保存在數據存儲區中),因爲字符串需要用單引號或雙引號括起來。

請注意,所有restrictions on queries仍適用。

此外,如果您想查詢multiple properties where you also use inequality operator,那麼您需要預先define compound indexes

更新: JDOQL文字參數說明適用於字符串和數字值;所有其他值類型都必須使用參數替換。你仍然可以通過編程來實現。

另一個解決方法是如果您使用long而不是Date並將日期轉換爲UNIX時間戳(其類型爲long)。

+0

謝謝彼得。這個問題特別關於查詢日期類型字段。我會用什麼語法? – nwaltham

+0

對不起,在我的快速sl I中,我錯過了這個事實。更新.. –

+0

好的 - 感謝您的確認 - 我已經切換到長時間在我的急躁中:-)但現在我知道我可以稱這是一個有意義的設計決定。再次感謝 – nwaltham

相關問題