Фильтрация перечислений в Google AppEngine JDO

#java #google-app-engine #jdo

#java #google-app-engine #jdo

Вопрос:

У меня возникла интересная проблема, которая кажется очень простой, но мне не хватает понимания Google AppEngine. Не слишком уверен, можно ли сделать следующее или нет

В качестве примера, скажем, у меня есть объект модели

 Person {
 ....
 PersonStatus status;

}
  

PersonStatus — это перечисление, в котором указаны значения «ЖИВОЙ», «ИСТЕКШИЙ», «ПАРАЛИЗОВАННЫЙ», «TMP»…

У меня также есть список PersonStatus, и если статус person соответствует кому-либо в списке, то этот person должен быть возвращен (в основном простая функция содержит функцию)

Я пытался

 query.setFilter(":p.contains(status.toString())");
  

где p — список строк
Это завершается ошибкой

 Unsupported method <contains> while parsing expression: InvokeExpression{[ParameterExpression{p}].contains(InvokeExpression{[PrimaryExpression{status}].toString(<none>)})}
  

и

 query.setFilter(":p.contains(status)");
  

где p — список PersonStatus, но это завершается ошибкой с сообщением, что PersonStatus (Enum) не является поддерживаемым типом данных.

Может кто-нибудь, пожалуйста, дать мне несколько предложений? Кажется очень простым, и я был бы удивлен, если AppEngine не поддерживает этот тип операций

Комментарии:

1. Не думайте, что JDOQL «Enum.toString» будет поддерживаться AppEngine, а «contains», безусловно, нет (как говорится в сообщении).

2. Итак, если бы мне пришлось сделать что-то подобное, о чем я упоминал в своем вопросе, есть ли какой-нибудь хакерский способ сделать это?