電子メール ID に基づいてユーザーのリストを取得するために JDO を使用してクラウド エンドポイント API を作成しています。電子メール 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)