我在Java中使用TupleSerialBinding将此结构存储在berkeley DB中:
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之后我没有找到如何存储&#34; values数组&#34;使用TupleSerialBinding。
存储min和max的值,但不存储values数组。
答案 0 :(得分:2)
我会为SampleValues类创建一个代理
@Persistent(proxyFor = SampleValues.class)
public class SampleValuesProxy implements PersistentProxy<SampleValues>, Serializable {
....
}
实施
initializeProxy
convertProxy
newInstance
将SampleValues类转换为SampleValuesProxy类的实例方法。将simple []替换为代理中的ArrayList。
然后您需要将代理注册为EntityModel
EntityModel model = new AnnotationModel();
model.registerClass(SampleValuesProxy.class);
并将模型放入storeconfig
那么当berkleydb去存储你的SampleValues对象时,它会将它转换为代理类,并将其写入(反之亦然)
看一下课程
com.sleepycat.persist.impl.MapProxy
在berkeleydb源代码分发中有关如何实现它的示例。