как привести объект массива? - PullRequest
0 голосов
/ 27 октября 2011

Я новичок в Java и изучаю Java-приложение с NetBeans.

У меня есть код:

Метод в userbean:

public List userList() {

  Query q = em.createNativeQuery("select username,address from tbuser");

  Iterator i = q.getResultList.iterator;

  ArrayList<UserState> userinfo = new ArrayList<UserState>();

  while (i.hasNext()) {

    Vector result = (Vector) i.next(); // <- HERE

    UserState us = new UserState();

    us.setName((String) result.get(0));

    us.setAddress((String) result.get(1));

    userinfo.add(us);

  }

  return userinfo;

}

Я использую этот методчтобы создать JSF Datatable и нормально работать с NetBeans6,5 и Glassfish2

, однако, когда я использую тот же метод, за исключением того, что я изменяю вектор на arraylist в Netbean 6,9

и Glassfish 3, я получил класс Cast

исключение во время выполнения: объект не может быть приведен к java.util.list;

Кто-нибудь знает, как это сделать?спасибо ..

Ответы [ 2 ]

0 голосов
/ 09 ноября 2013

Хм, лучше создать DTO непосредственно внутри запроса JPA:

public List userList() {

  Query q = em.createNativeQuery("SELECT new UserState(username,address) FROM tbuser");

  return q.getResultList();

}

Примерно так (это не проверенный код)

0 голосов
/ 27 октября 2011

Я сомневаюсь, что код работает следующим образом, такие методы, как hasNext(), не содержат скобок.Если вы скопировали код, пожалуйста, сделайте это снова, поскольку мы предполагаем, что ваш код не улучшит качество ответов.

Ваша проблема в том, что вы хотите получить доступ к элементу из вектора.Но тип объектов внутри вектора не Vector, а другой тип коллекции.Вы хотите получить элемент этого вектора (что совершенно нормально), но затем вы пытаетесь привести его к Vector, что не получается.

Поскольку я не вижу, какой тип объектов будет в векторево время выполнения вы можете для начала использовать System.out.println(i.next().getClass().getCanonicalName()); перед строкой, в которой происходит ваша текущая ошибка.Это печатает тип элемента вектора.

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