2011-09-10 3 views
0

I는 자바에서이 구조를 사용 TupleSerialBinding 버클리 DB에 저장 될 수있다 :Java Berkeley DB에 ArrayList 필드를 저장하려면 어떻게해야합니까?

public class SampleValues implements Serializable, MarshalledEntity { 
private static final long serialVersionUID = 1L; 

    protected double min; 
    protected double max; 

    protected ArrayList<Double> values = new ArrayList<Double>(); 
} 

키는 EntryBinding 있도록 클래스를 사용하여 생성 된 최소값이다. SamplesValues를 기반으로 EntityBinding을 작성한 후 TupleSerialBinding을 사용하여 "값 배열"을 저장하는 방법을 찾지 못했습니다.

min 및 max 값은 저장되지만 값 배열은 저장되지 않습니다.

답변

2

은 내가 SampleValuesProxy 클래스에 SampleValues ​​클래스를 변환 할

initializeProxy 
convertProxy 
newInstance 

인스턴스 메소드를 구현

@Persistent(proxyFor = SampleValues.class) 
public class SampleValuesProxy implements PersistentProxy<SampleValues>, Serializable { 
    .... 
} 

로 SampleValues ​​클래스의 프록시를 만들 것입니다. 프록시의 ArrayList에 간단한 []를 사용합니다.

는 당신은 프록시로 변환,

EntityModel model = new AnnotationModel(); 
model.registerClass(SampleValuesProxy.class); 

로 EntityModel와 프록시를 등록하고 berkleydb이 SampleValues ​​객체를 저장하기 위해 갈 때

그래서 다음 storeconfig에서 모델을 둘 필요 클래스, 그리고 그것을 기록하는 클래스

com.sleepycat.persist.impl.MapProxy 
012에서

봐 (그 반대를 읽을 때) berkeleydb 소스 배포판의 구현 방법에 대한 예제는

입니다.