Google Datastore problem with query on * User * type

Emest pergunta Resolvi o problema de consultar o Google Datastore para recuperar itens por usuário (com.google.appengine.api.users.User) assim:

User user = userService.getCurrentUser();
String select_query = "select from " + Greeting.class.getName(); 
Query query = pm.newQuery(select_query); 
query.setFilter("author == paramAuthor"); 
query.declareParameters("java.lang.String paramAuthor"); 
greetings = (List<Greeting>) query.execute(user);

O acima funciona bem - mas, depois de um pouco de confusão, percebi que essa sintaxe não é muito prática, pois surge a necessidade de criar consultas mais complicadas - então decidi criar manualmente meus filtros e agora consegui, por exemplo, algo como o seguinte ( onde o filtro geralmente é passado como uma variável de seqüência de caracteres, mas agora é construído em linha para simplificar):

User user = userService.getCurrentUser();    
String select_query = "select from " + Greeting.class.getName(); 
Query query = pm.newQuery(select_query); 
query.setFilter("author == '"+ user.getEmail() +"'");  
greetings = (List<Greeting>) query.execute();

Obviamente, isso não funcionará, mesmo que esta sintaxe comfield = 'value' ésupported por JDOQL e funciona bem em outros campos (tipos de string e enums). A outra coisa estranha é que, olhando para o visualizador de dados no painel do mecanismo do aplicativo, o campo 'autor' é armazenado como tipoDo utilizado, mas o valor é '[email protected]' e, novamente, quando eu o configuro como parâmetro (o caso acima, que funciona bem), estou declarando o parâmetro como uma String e passando uma instância de User (user) que é serializado com um simplestoString() (Eu acho)

Alguma idéia?

questionAnswers(2)

yourAnswerToTheQuestion