我正在使用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中编写这些查询,所以任何提示或帮助都会非常受欢迎。
此致 克拉斯
答案 0 :(得分:0)
好的,所以简短的回答似乎是今天在App Engine中无法做到这一点。我为此制定了一个适用于我的独特情况的解决方法,但它不适用于所有情况,因此我不会在此处发布。
如果您需要这样的查询,请考虑重构您的数据模型..