我正在使用 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 中编写这些查询存在限制,因此非常欢迎任何提示或帮助。
问候克拉斯