0

我正在使用 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)以及之前的不等式搜索。

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

也许我遗漏了一些明显的东西,或者做了一个编码错误,或者可能对如何在 appengine 中编写这些查询存在限制,因此非常欢迎任何提示或帮助。

问候克拉斯

4

1 回答 1

0

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

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

于 2010-05-23T11:46:07.393 回答