2010-05-16 52 views
0

我與App Engine(Java/JDO)的工作,並試圖做一些查詢與列表。的AppEngine JDO-QL:問題與多個AND和OR查詢

所以我有以下類:

@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true") 
public class MyEntity 
{ 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    Key key; 

    @Persistent 
    List<String> tags = new ArrayList<String>(); 

    @Persistent 
    String otherVar; 
} 

以下JDO-QL工作對我來說:

(tags.contains('a') || tags.contains('b') || tags.contains('c') || tags.contains('d')) && otherVar > 'a' && otherVar < 'z' 

這似乎返回所有結果,其中標籤具有一個或多個字符串與一個或更多的給定值,並與不平等搜索其他變量一起

但以下不起作用:

(tags.contains('a') || tags.contains('_a')) && (tags.contains('b') || tags.contains('_b')) && otherVar > 'a' && otherVar < 'z' 

在這種情況下,我希望所有匹配至少有一個a(a或_a)和一個b(b或_b)與不平等搜索一起使用。

但問題是,我也找回了結果,其中有一個,但沒有B,這不是我想要的。

也許我錯過了一些東西明顯,或者做一個編碼錯誤,或者可能有關於如何寫的AppEngine這些查詢的限制,所以任何提示或幫助將是非常歡迎的。

問候 克拉斯

回答

0

好了,簡單的答案似乎是不可能做到這一點今天在App Engine中。我已經爲這一種變通方法,對我的特殊情況的作品,但它並不適用於所有情況的解決方案,所以我不會在這裏發佈。

如果你需要這樣的查詢,想想你重組數據模型..