Проблема с получением данных из моей базы данных с использованием JPA - PullRequest
0 голосов
/ 20 августа 2011

Я пытаюсь получить из моей базы данных (используя JPA) заданный список элементов, назвать их идентификатор, моя функция, вызванная моей addFunction, возвращает только идентификатор последнего элемента и игнорирует остальные!

public ArrayList<Integer> getListidItemByItemName()
  {
       try{
       EntityTransaction entityTrans=emm.getTransaction();
       entityTrans.begin();
          for (String val : listItem)  
          {
           System.out.println("my values"+val);
           javax.persistence.Query multipleSelect= em.createQuery("SELECT i.ItemId FROM Item i WHERE i.ItemName IN (:w)" );
           multipleSelect.setParameter("w", val);
           List ItemId =  new LinkedList();
           ItemId= multipleSelect.getResultList();
           listIdItem = new ArrayList(ItemId);
          }    
          entityTrans.commit();
          System.out.println("Id for given item name"+listIdItem);
          return listIdItem;
         }

         catch(Exception e)
        {
           e.printStackTrace();
        }

Результат:

INFO: my valuesResponse Time
INFO: my valuesAssigned Group Response Time
INFO: Id for given item name[7]  //the id of the last item in the list

      return listIdItem;
  }

В чем проблема?

ОБНОВЛЕНИЕ: Я использовал решение мат, и он работал нормально

спасибо

Ответы [ 2 ]

1 голос
/ 20 августа 2011
listIdItem = new ArrayList(ItemId);

Эта строка заменяет все, что было в listIdItem, новым списком. Если вы хотите добавить в список listIdItem, сделайте что-то вроде:

listIdItem.addAll(ItemId);
0 голосов
/ 20 августа 2011

Вы перезаписываете свою переменную listIdItem в каждой итерации цикла новым ArrayList. Таким образом, в итоге listIdItem будет содержать только значения последней итерации.

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