使用JPA从我的数据库中检索数据的问题

时间:2011-08-20 08:29:21

标签: java jpa

我想从我的数据库中检索(使用JPA),为给定的项目列表命名他们的id, 我的函数由我的addFunction调用,只返回最后一项的id而忽略其余项!

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 个答案:

答案 0 :(得分:1)

listIdItem = new ArrayList(ItemId);

此行用新列表替换listIdItem中的所有内容。如果要添加到listIdItem列表,请执行以下操作:

listIdItem.addAll(ItemId);

答案 1 :(得分:0)

您在循环的每次迭代中使用新的listIdItem覆盖变量ArrayList。所以最后listIdItem只包含最后一次迭代的值。