Gop*_*opi 3 java google-app-engine jdo jdoql
我在谷歌应用引擎上使用JDO.每个"员工"都有一个"密钥".我有一组密钥,想要检索其密钥属于该集合的所有Employees.
所以我使用此处指定的'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
Run Code Online (Sandbox Code Playgroud)
我想知道的是这个查询中的这个":P"是什么?Employee对象没有任何名为'p'的字段,我的查询也没有声明任何此类参数.那么'p'指向的是什么?'p'有什么特别的含义吗?
我相信它映射了一个隐式输入参数.由于只有一个参数,您不需要显式调用setParameter,您只需使用它即可.我相信它会好起来的:
Query query = pm.newQuery(Employee.class,":keys.contains(key)");
List<Employee> employees = (List<Employee>) q.execute(keys);
Run Code Online (Sandbox Code Playgroud)
这可能更清楚.
有关另一个示例,请参阅Apache JDOQL文档的"隐式参数"部分.