JDOQL 在搜索成员列表变量中是否存在一个或多个元素时,有什么方法可以避免查询中的多个 .contains() 调用吗?
这个问题几乎说明了一切。
如果我有一个类 Class A
public class A {
...
private List<String> keys;
...
}
并且我想从 DataStore 中选择至少具有一个键列表中的所有 A
实例,是否有更好的方法来做到这一点比这个:
query = pm.newQuery(A.class);
query.setFilter("keys.contains(:key1) || keys.contains(:key2) || keys.contains(:key3)");
List<A> results = (List<A>)query.execute(key1, key2, key3);
这还没有实施,所以我愿意接受激进的建议。
The question pretty much says it all.
If I have a class Class A
public class A {
...
private List<String> keys;
...
}
And I want to select all A
instances from the DataStore that have atleast one of a List of keys, is there a better way of doing it than this:
query = pm.newQuery(A.class);
query.setFilter("keys.contains(:key1) || keys.contains(:key2) || keys.contains(:key3)");
List<A> results = (List<A>)query.execute(key1, key2, key3);
This has not yet been implemented, so I am open to radical suggestions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
"SELECT FROM " + A.class.getName() + " WHERE keys.contains(var) && (var == :key1 || var == :key2 || var == :key3) 变量 java.lang .String var"
或者至少我们在其他数据存储中使用的是这样的;有人猜测谷歌是否已经实现了它。
"SELECT FROM " + A.class.getName() + " WHERE keys.contains(var) && (var == :key1 || var == :key2 || var == :key3) VARIABLES java.lang.String var"
Or at least that's what we'd use with other datastores; anyones guess if Google have implemented it.
现在它已在 gae 中实现,因此您的代码可以完美运行。
这是另一个例子:
或者
It's now implemented in gae so your code runs perfectly.
Here another example:
or