我在谷歌应用引擎上使用JDO。每个“员工”都有一个“密钥”。我有一组密钥,想要检索其密钥属于该集合的所有Employees。
所以我使用指定here的'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”有什么特别的含义吗?
答案 0 :(得分:5)
我相信它正在映射隐式输入参数。由于只有一个参数,您不需要显式调用setParameter
,您可以使用它。我相信会一直没问题:
Query query = pm.newQuery(Employee.class,":keys.contains(key)");
List<Employee> employees = (List<Employee>) q.execute(keys);
可能更清楚。
另请参阅Apache JDOQL docs的“隐含参数”部分。