我有以下代码
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;
}
我需要它来返回ArrayList而不是Array。是否有返回ArrayList的查询?
答案 0 :(得分:0)
变化:
dbItems = (ArrayList<Item>) query.getResultList();
到此:
dbItems = new ArrayList<Item>(query.getResultList());
现在,从设计的角度来看,您的方法的客户端应该决定他们想要使用哪种实现,尽可能使用抽象/接口。忘掉ArrayList,只需在查询方法周围使用List,然后你的方法的客户端必须决定如何使用该List以及他们想要的实现。
此外,您不需要单个SELECT查询的事务
public List<Item> getDbItems()
{
TypedQuery<Item> query = em.createQuery("SELECT i FROM Item i", Item.class);
return query.getResultList();
}
答案 1 :(得分:0)
您必须了解接口和类是什么:
您要实例化的类,在本例中为ArrayList,您说 如何 将为接口列表提供的方法将被执行,所以现在,你的代码可以编译,而且功能很好,可以:
Engine