使用 GAE-Java-JDO,是否可以过滤列表中特定元素的值?
什么有效
通常,我会有以下内容:
@PersistenceCapable
class A {
String field1;
String field2;
// id, getters and setters
}
然后我会构建一个简单的查询:
Query q = pm.newQuery(A.class, "field1 == val");
q.declareParameters("String val");
List<A> list = new ArrayList<A>((List<A>) q.execute("foo"));
我想要什么
以上工作正常。但我想要的是存储在列表中的所有字段:
@PersistenceCapable
class AA {
ArrayList<String> fields;
// id, getters and setters
}
然后能够查询列表中的特定字段:
int index = 0;
Query q = pm.newQuery(A.class, "fields.get(index) == val");
q.declareParameters("int index, String val");
List<A> list = new ArrayList<A>((List<A>) q.execute(index, "foo"));
但这会引发异常:
org.datanucleus.store.appengine.query.DatastoreQuery$UnsupportedDatastoreFeatureException:
Problem with query
<SELECT FROM xxx.AA WHERE fields.get(index) == val PARAMETERS int index, String val,>:
Unsupported method <get> while parsing expression:
InvokeExpression{[PrimaryExpression{strings}].get(ParameterExpression{ui})}
我阅读GAE-JDO 文档的印象是这是不可能的:
“属性值必须由应用程序提供;它不能引用或根据其他属性计算”
所以......有什么想法吗?
提前致谢!