【发布时间】:2013-05-25 04:18:06
【问题描述】:
我正在编写一个使用 JDO 的云端点 api,以根据 emailid 获取用户列表。我将电子邮件 ID 作为 @Named 参数传递给电子邮件并将其添加到查询过滤器中,我收到错误消息“解析查询时出现意外的表达式类型。GAE(电子邮件)不支持的变量”
仅供参考,gae 版本是 1.8
@Api (name="MyAppname", version="v1")
public class PersonEndpoint {
public Person validate(@Named("email") String email, @Named("role") String role){
.......
PersistenceManager pm=getPersistenceManager();
Query q = pm.newQuery(Person.class);
q.setFilter(" email == emailParam && role == "+role);
q.declareParameters("String emailParam");
try{
person=(Person)q.execute(email);
}finally{
q.closeAll();
pm.close();
}
return person;
}
}
有什么建议吗?
这是 Person 类
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Person {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String emailId;
@Persistent
private String role;
<getters and setters here>
}
我在调用验证 API 时看到的异常
javax.jdo.JDOFatalUserException: Unexpected expression type while parsing query. Variables not supported by GAE (email)
at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:498)
at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:252)
【问题讨论】:
-
任何异常都有一个堆栈跟踪和一个类型。
-
我看到这个异常“解析查询时出现意外的表达式类型。GAE(电子邮件)不支持的变量”...... gae 不支持电子邮件吗?我们不能编写查询来通过电子邮件 ID 过滤实体吗?
-
您仍然没有提供基本信息。你有一个 Person 类......它是什么?堆栈跟踪?
-
已经编辑了我的问题,提供了 Person 类的详细信息和异常的堆栈跟踪。希望这就够了
标签: google-app-engine email filter jdo notsupportedexception