0

这个问题几乎说明了一切。

如果我有课Class A

public class A {
    ...
    private List<String> keys;
    ...
}

我想A从 DataStore 中选择至少有一个键列表的所有实例,有没有比这更好的方法:

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);

这还没有实施,所以我愿意接受激进的建议。

4

2 回答 2

1

"SELECT FROM " + A.class.getName() + " WHERE keys.contains(var) && (var == :key1 || var == :key2 || var == :key3) 变量 java.lang.String var "

或者至少那是我们与其他数据存储一起使用的;任何人都猜测谷歌是否已经实施了它。

于 2010-04-07T14:15:17.753 回答
1

它现在已在 gae 中实现,因此您的代码可以完美运行。这里再举一个例子:

Query query = pm.newQuery(Book.class);
query.setFilter("_AuthorKeys.contains(:key1) || _AuthorKeys.contains(:key2)");
Key key1 = KeyFactory.stringToKey("xxxxxxxxxxx");
Key key2 = KeyFactory.stringToKey("yyyyyyyyyyy");
List<Book> books = (List<Book>) query.execute(key1, key2);

或者

Query query = pm.newQuery(Book.class);
query.setFilter("_AuthorKeys.contains(:keys)");
List<Key> keys = new LinkedList();
keys.add(KeyFactory.stringToKey("xxxxxx"));
keys.add(KeyFactory.stringToKey("yyyyyy"));
List<Book> books = (List<Book>) query.execute(keys);
于 2011-07-01T17:37:20.313 回答