3

我在谷歌应用引擎上使用 JDO。每个“员工”都有一个“钥匙”。我有一组键,想检索其键属于该组的所有员工。

所以我使用这里指定的 'contains()' 过滤器来实现它。代码工作正常,看起来像这样 -

List<Key> keys = getLookupKeys(....) ..//Get keys from somewhere.

Query query = pm.newQuery(Employee.class,":p.contains(key)"); //What is ":P" here?
List<Employee> employees = (List<Employee>) q.execute(keys); //This correctly gives me all I want

我想知道的是这个查询中的“:P”是什么?Employee 对象没有任何名为“p”的字段,我的查询也没有声明任何此类参数。那么这个“p”指的是什么?“p”有什么特殊含义吗?

4

1 回答 1

5

我相信它正在映射一个隐式输入参数。因为只有一个参数,所以不需要显式调用setParameter,直接使用即可。我相信这是好的:

Query query = pm.newQuery(Employee.class,":keys.contains(key)");
List<Employee> employees = (List<Employee>) q.execute(keys); 

这可能更清楚。

有关另一个示例,请参阅Apache JDOQL 文档的“隐式参数”部分。

于 2010-08-13T05:29:22.130 回答