2012-03-30 43 views
1

我在Java中使用GAE,我有一個數據表「人」,我需要做這樣的事情:「OR」操作在谷歌的App Engine(Java)的

SELECT * FROM PERSON WHERE NAME="MIKE" OR AGE=50

我的代碼生成「 AND「,我不知道如何建立這個句子或者

Query query = new Query(getEntityKind(), getRootEntityKey()); 
query.addFilter("name", FilterOperator.EQUAL, "Mike"); 
query.addFilter("age", FilterOperator.EQUAL, 50); 

任何想法?

謝謝!

回答

4

在GAE查詢中沒有OR運算符。唯一的方法是運行兩個查詢,然後合併結果。

更新:自1.7.0以來,GAE通過CompositeFilterOperator支持OR查詢。它所做的基本上是運行並行查詢,然後在服務器上進行AND/OR操作。成本與運行單獨的查詢並將其合併到客戶端的成本相同,但節省往返時間。

+0

謝謝!合併結果... – Marta 2012-04-05 11:17:28

0

您可以在JDO或JPA中執行OR操作 - 但這有點小把戲,因爲它實際上會將您的查詢轉換爲IN查詢。這可能會給你一些關於如何重寫你的查詢的想法。

查看此博客文章的結尾瞭解更多:http://gae-java-persistence.blogspot.co.uk/2009/12/queries-with-and-in-filters.html

+0

對不屬於不同屬性的一個屬性執行「IN」查詢。它還將內部轉換爲合併結果的一系列查詢。 – 2012-03-31 12:41:53