исключение приведения класса в коде Google App Engine - PullRequest
0 голосов
/ 14 марта 2012

Я пытаюсь сделать запрос к хранилищу данных и привести его к определенному пользователем типу объекта.Но я получаю ошибку приведения класса.Пожалуйста, посмотрите на код

   import com.gwt.samples.shared.List;

   public ArrayList<String> viewLists(String user_id) {
    PersistenceManager pm = PMF.get().getPersistenceManager();
    ArrayList<String> res;
    String[] ret;
            Query q=pm.newQuery(List.class);
            q.setFilter("owner_id == useridparam");
            q.declareParameters("String useridparam");

            try
            {
               res=(ArrayList<List>)q.execute(user_id); //error occurs here i guess
            }
            finally
            {
               q.closeAll();
            }
            return res;
         }

Проблема возникает из-за того, что query.execute возвращает объект и его нельзя привести к типу ArrayList.Но я следую этому примеру из здесь

Пожалуйста, помогите

1 Ответ

2 голосов
/ 14 марта 2012

Могу ли я предложить:

1. Удалите строку

import com.gwt.samples.shared.List;

2. Вместо

Query q=pm.newQuery(List.class);

и

res=(ArrayList<List>)q.execute(user_id); //error occurs here i guess

используйте

Query q=pm.newQuery(com.gwt.samples.shared.List.class);

и

res=(ArrayList<java.util.List>)q.execute(user_id);

Когда вы говорите «я думаю, здесь происходит ошибка», я предполагаю, что вы можете определенно это выяснить, изучив соответствующую трассировку стека исключений или запись в журнале.

Кроме того, я только что увидел, что ваш элемент данных res имеет тип данных ArrayList<String>, тогда как ваш запрос вернется (включая изменения моего кода выше) java.util.List<com.gwt.samples.shared.List>.

Вымне нужно будет изменить тип данных вашего запроса или res, чтобы все заработало.

У меня есть стандартный метод запроса.Возврат запроса сохраняется в java.util.List.Затем я делаю

java.util.List liResult = [My query];
ArrayList alResult = new ArrayList(liResult);

Вне моего метода я бросил ArrayList на ArrayList<[Query data type]>.

Любая помощь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...