JPA(在这种情况下是Eclipselink)是否总是返回IndirectList,其中Entity有一个List? 是没有该列表或它应该转换为另一个列表(可能是链表)?
答案 0 :(得分:3)
如果我们查看EclipseLink的IndirectList's API,它会说:
使用IndirectList:使用IndirectList(jdk1.1)或Collection / List / Vector(jdk1.2)类型声明相应的实例变量。
TopLink会在实例变量中放置一个IndirectList 包含域对象从数据库中读取。第一个 消息发送到IndirectList,内容从中获取 恢复数据库和正常的Collection / List / Vector行为。
如果我们查看IndirectList sources,我们会看到,所有工作都委托给它的原始集合,就像API所说的那样。
JPA(在这种情况下是Eclipselink)是否总是返回IndirectList,其中Entity有一个List?
是的,它总是返回包含IndirectList的指定集合。由于它将所有内部工作委托给包装集合,因此它保留了它的工作方式。
该列表是否正确或它应该转换为另一个列表(也许 链表)?
是的,可以使用IndirectList。你没有转换,只需定义你想要的任何类型的集合,不要担心IndirectList,因为它是透明管理的。
答案 1 :(得分:2)
由于List
是一个接口,JPA提供者可以自由地返回任何实现。 EclipseLink重新运行使用IndirectList
的{{1}}。这很好,因为List
是IndirectList
。
对于记录或将来的参考,通常最好使用JPA接口。