AppEngine JDO-QL:查询中有多个AND和OR的问题

时间:2010-05-16 09:41:04

标签: java google-app-engine jdo jdoql

我正在使用App Engine(Java / JDO)并尝试使用列表进行一些查询。

所以我有以下课程:

@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'

这似乎返回所有结果,其中标签具有一个或多个具有一个或多个给定值的字符串,并且与otherVar上的不等式搜索一起

但以下不起作用:

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

在这种情况下,我想要所有的命中,其中至少有一个a(a或_a)和一个b(b或_b)与不等式搜索一样。

但问题是我还得到了结果,但是没有b,这不是我想要的。

也许我错过了一些明显的错误,或者编码错误,或者可能会限制你如何在appengine中编写这些查询,所以任何提示或帮助都会非常受欢迎。

此致 克拉斯

1 个答案:

答案 0 :(得分:0)

好的,所以简短的回答似乎是今天在App Engine中无法做到这一点。我为此制定了一个适用于我的独特情况的解决方法,但它不适用于所有情况,因此我不会在此处发布。

如果您需要这样的查询,请考虑重构您的数据模型..