1
我正在使用JDO编写基于emailid的用户列表的云端点API。我传递EMAILID作为@Named参数的API方法并将其添加到查询过滤器和我得到的错误信息“表达的部分无法解析:@ gmail.com”带特殊字符的gae jdoquery参数
@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)
如何在电子邮件中将特殊字符的参数传递给查询过滤器?
感谢您的帮助!但是做出这些改变是行不通的。我得到错误“javax.jdo.JDOFatalUserException:解析查询时出现意外的表达式类型。GAE(email)不支持的变量” –
如果电子邮件和角色是Person类中的字段,那么在该语句中没有变量。事实。如果你真的想要说你的领域人(未发布的类)是emailId,然后把emailId。任何阅读这样的问题的人都不能期望成为心理上的 – DataNucleus
是'emailId'和'role'是Person类中字段的字段。 public Person validate(@Named(“emailId”)String emailId,@ Named(“role”)字符串作用,@命名(“pwd”)字符串pwd){ \t \t Person person = new Person(); \t \t \t \t PersistenceManager pm = getPersistenceManager(); \t \t查询q = pm.newQuery(Person.class); \t \t \t \t q.setFilter(“email ==:emailIdParam && role ==:roleParam”); \t \t Map paramValues = new HashMap(); \t \t paramValues.put(“emailIdParam”,emailId); \t \t paramValues.put(“roleParam”,role); \t \t列表 persons =(列表)q.executeWithMap(paramValues);' –