Java 我们如何在eclipseLink中使用自己的集合进行延迟加载?

Java 我们如何在eclipseLink中使用自己的集合进行延迟加载?,java,eclipselink,lazy-loading,Java,Eclipselink,Lazy Loading,我想使用MyCollection实现java提供的集合接口。它可以很好地用于即时加载,但对于延迟加载,eclipselink使用自己的实现(间接列表)。是否可以使用MyCollection进行延迟加载 MyCollection代码如下所示: package com.alta.convertor; import java.util.Collection; import java.util.Iterator; import java.util.Vector; public class MyCol

我想使用MyCollection实现java提供的集合接口。它可以很好地用于即时加载,但对于延迟加载,eclipselink使用自己的实现(间接列表)。是否可以使用MyCollection进行延迟加载

MyCollection代码如下所示:

package com.alta.convertor;

import java.util.Collection;
import java.util.Iterator;
import java.util.Vector;

public class MyCollection<E> implements Collection<E>,Cloneable{


    Collection<E> collection;
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public MyCollection() {
        this(new Vector());
    }

    public MyCollection(Collection<E> collection) {
        this.collection=collection;
    }
    @Override
    public int size() {

        return collection.size();
    }

    @Override
    public boolean isEmpty() {

        return collection.isEmpty();
    }

    @Override
    public boolean contains(Object o) {

        return collection.contains(o);
    }

    @Override
    public Iterator<E> iterator() {

        return collection.iterator();
    }

    @Override
    public Object[] toArray() {

        return collection.toArray();
    }

    @Override
    public <T> T[] toArray(T[] a) {

        return collection.toArray(a);
    }

    @Override
    public boolean add(E e) {

        return false;
    }

    @Override
    public boolean remove(Object o) {

        return collection.remove(o);
    }

    @Override
    public boolean containsAll(Collection<?> c) {

        return collection.containsAll(c);
    }

    @Override
    public boolean addAll(Collection<? extends E> c) {

        return collection.addAll(c);
    }

    @Override
    public boolean removeAll(Collection<?> c) {

        return collection.removeAll(c);
    }

    @Override
    public boolean retainAll(Collection<?> c) {

        return collection.retainAll(c);
    }

    @Override
    public void clear() {

        collection.clear();
    }

}
私有MyCollection地址数组

    public Person() {

    }  

    public Person(String firstName, String lastName, String email) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;

    }
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }   

    public MyCollection<Address> getAddressArray() {
        return addressArray;
    }

    public void setAddressArray(MyCollection<Address> address) {
        this.addressArray = address;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public Long getPersonId() {
        return personId;
    }

    public void setPersonId(Long personId) {
        this.personId = personId;
    }

}
公众人物(){
}  
公众人物(stringfirstname、stringlastname、stringemail){
超级();
this.firstName=firstName;
this.lastName=lastName;
this.email=电子邮件;
}
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}   
公共MyCollection getAddressArray(){
返回地址数组;
}
public void setAddressArray(MyCollection地址){
this.addressArray=地址;
}
公共字符串getFirstName(){
返回名字;
}
public void setFirstName(字符串firstName){
this.firstName=firstName;
}
公共字符串getLastName(){
返回姓氏;
}
public void setLastName(字符串lastName){
this.lastName=lastName;
}
公共长getPersonId(){
回归人格;
}
公共无效setPersonId(长personId){
this.personId=personId;
}
}

当前没有,您需要使用一个集合接口来允许延迟(列表、设置、映射)。如果使用的是EAGER,则可以使用自己的集合类型

但是,我目前正在处理这个问题,很可能很快会检查到2.6的修复

一般来说,如果可以的话,最好还是使用集合接口。
您还可以将关系包装在表示集合的可嵌入文件中

当我们使用反向实体时,eclipselink中的多通映射是否可能有延迟加载?
    public Person() {

    }  

    public Person(String firstName, String lastName, String email) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;

    }
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }   

    public MyCollection<Address> getAddressArray() {
        return addressArray;
    }

    public void setAddressArray(MyCollection<Address> address) {
        this.addressArray = address;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public Long getPersonId() {
        return personId;
    }

    public void setPersonId(Long personId) {
        this.personId = personId;
    }

}