Java 使用JPA/EclipseLink延迟加载集合
有没有办法让EclipseLink单独加载集合的每个子项 我有两个实体:Java 使用JPA/EclipseLink延迟加载集合,java,jpa,collections,lazy-loading,eclipselink,Java,Jpa,Collections,Lazy Loading,Eclipselink,有没有办法让EclipseLink单独加载集合的每个子项 我有两个实体: @Entity public class A { private List<Item> collection = new LinkedList<Item>(); @OneToMany(fetch = FetchType.LAZY) public List<Item> getCollection() { return this.collectio
@Entity
public class A {
private List<Item> collection = new LinkedList<Item>();
@OneToMany(fetch = FetchType.LAZY)
public List<Item> getCollection() {
return this.collection;
}
public void setCollection (List<Item> collection) {
this.collection = collection;
}
}
@Entity
public class Item {
private byte[] data;
@Lob
public byte[] getData() {
return data;
}
public void setData(byte[] data) {
this.data = data;
}
}
@实体
公共A类{
私有列表集合=新建LinkedList();
@OneToMany(fetch=FetchType.LAZY)
公共列表getCollection(){
退回此项。收藏;
}
公共集合(列表集合){
this.collection=collection;
}
}
@实体
公共类项目{
专用字节[]数据;
@高球
公共字节[]getData(){
返回数据;
}
公共void setData(字节[]数据){
这个数据=数据;
}
}
我的收藏包含大量项目,因此我不希望EclipseLink在访问时加载所有子项,例如仅加载第一个项目。
但是调用a.getCollection().get(0.getData()会将集合的所有项加载到内存中。有没有办法避免这种情况?(并且只加载内存中的第一项)添加(实际上mappedBy
应该位于OneToMany
端,但为了简单起见):
到项
类,分别通过外键获取每个项:
SELECT i
FROM Item i
WHERE i.a = :a
其中
:a
参数是a
的一个实例,如果您不想在集合中读取,则不要映射它。相反,只需查询它
SELECT i
FROM Item i
WHERE i.a = :a