在使用带有框架JSF的List或ArrayList时,我遇到了一些困惑 我曾经使用定义的ArrayList工作direclty:
@OneToMany
ArrayList<Book>books;
在一些控制者中,我可以这样做:user.getBooks();
,我会得到我的清单中的元素,这很好
但是当我使用List而不是ArrayList时会发生不同的事情:
@OneToMany
List<Book>books;
如果我尝试:user.getBooks();
我会得到:IndirectList: not instantiated
如果我这样做,我只能获得列表:FetchType.EAGER
有人可以解释我的区别吗?
答案 0 :(得分:0)
框架可以实例化ArrayList。但是List无法实例化;这是一个界面。通过执行以下操作来使用List:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "otherEntity")
private List<String> components = new ArrayList<>();
在变量声明或构造函数中初始化集合总是一个好主意,以避免NPE。