【问题标题】:AppEngine JDO-QL : Problem with multiple AND and OR in queryAppEngine JDO-QL:查询中存在多个 AND 和 OR 的问题
【发布时间】:2011-02-20 01:20:35
【问题描述】:

我正在使用 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 中编写这些查询的方式受到限制,因此非常欢迎任何提示或帮助。

问候 克拉斯

【问题讨论】:

    标签: java google-app-engine jdo jdoql


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多