我正在使用 JDO 编写一个云端点 api,以根据 emailid 获取用户列表。我将 emailId 作为 @Named 参数传递给 Api 方法并将其添加到查询过滤器中,我收到错误消息“无法解析表达式部分:@gmail.com”
@Api (name="MyAppname", version="v1")
public class PersonEndpoint {
public Person validate(@Named("emailId") String emailId, @Named("role") String role){
.......
PersistenceManager pm=getPersistenceManager();
Query q = pm.newQuery(Person.class);
q.setFilter(" email == "+emailId+" && role == "+role);
try{
person=(Person)q.execute();
}finally{
q.closeAll();
pm.close();
}
return person;
}
当我调用上面的 api 时,会抛出以下错误
javax.jdo.JDOUserException: Portion of expression could not be parsed: @gmail.com && role == collector
at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:519)
at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:230)
我们如何将带有特殊字符的参数(如电子邮件中的参数)传递给查询过滤器?