无法将java.util.Vector转换为java.util.ArrayList-将列表转换为ArrayList

无法将java.util.Vector转换为java.util.ArrayList-将列表转换为ArrayList,java,jpa,Java,Jpa,我有以下代码 public List<Item> getDbItems() { ArrayList<Item> dbItems = new ArrayList<>(); EntityTransaction entr=em.getTransaction(); entr.begin(); TypedQuery<Item> query = em.createQuery("SE

我有以下代码

public List<Item> getDbItems()
    {
        ArrayList<Item> dbItems = new ArrayList<>();
        EntityTransaction entr=em.getTransaction();
            entr.begin();
        TypedQuery<Item> query = em.createQuery("SELECT i FROM Item i", Item.class);
        dbItems = (ArrayList<Item>) query.getResultList();
        em.getTransaction().commit();
        return dbItems;
    }
public List getDbItems()
{
ArrayList dbItems=新的ArrayList();
EntityTransaction entr=em.getTransaction();
entr.begin();
TypedQuery query=em.createQuery(“从Item i中选择i”,Item.class);
dbItems=(ArrayList)query.getResultList();
em.getTransaction().commit();
归还物品;
}
我需要它返回ArrayList而不是数组。是否有返回ArrayList的查询?

更改:

dbItems = (ArrayList<Item>) query.getResultList();
dbItems=(ArrayList)query.getResultList();
为此:

dbItems = new ArrayList<Item>(query.getResultList());
dbItems=newarraylist(query.getResultList());
现在,从设计的角度来看,方法的客户机应该决定他们想要使用哪种实现,尽可能使用抽象/接口。忘记ArrayList吧,只需在查询方法周围使用List,然后方法的客户机就必须决定如何使用该列表以及他们想要的实现

此外,对于单个SELECT查询,您不需要事务

public List<Item> getDbItems()
    { 
        TypedQuery<Item> query = em.createQuery("SELECT i FROM Item i", Item.class);
        return query.getResultList();
    }
public List getDbItems()
{ 
TypedQuery query=em.createQuery(“从Item i中选择i”,Item.class);
返回query.getResultList();
}

您必须了解什么是接口和类:

  • 这里的接口是List,它将为您提供一组可以调用的函数/方法
  • 您将要实例的类,在本例中为ArrayList,您对您说,如何执行为接口列表提供的方法,因此现在,您的代码可以编译,并且可以正常运行,请执行以下操作:

    public List<Item> getDbItems()
    {
        List<Item> dbItems = new ArrayList<>();
        EntityTransaction entr=em.getTransaction();
            entr.begin();
        TypedQuery<Item> query = em.createQuery("SELECT i FROM Item i", Item.class);
        dbItems = query.getResultList();
        em.getTransaction().commit();
        return dbItems;
    }
    
    public List getDbItems()
    {
    List dbItems=new ArrayList();
    EntityTransaction entr=em.getTransaction();
    entr.begin();
    TypedQuery query=em.createQuery(“从Item i中选择i”,Item.class);
    dbItems=query.getResultList();
    em.getTransaction().commit();
    归还物品;
    }
    

您对
ArrayList
cast的观点是什么?为什么不使用更多obivous
(列表)
?我需要它来返回ArrayList-不,你不认为这一切都归结为继承101和对接口进行编码。更多的信息将有助于提供解决方案。为什么标题中提到
java.util.Vector