2010-05-16 55 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中。我已经为这一种变通方法,对我的特殊情况的作品,但它并不适用于所有情况的解决方案,所以我不会在这里发布。

如果你需要这样的查询,想想你重组数据模型..