我在 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 之后
我没有找到如何使用 TupleSerialBinding 存储“值数组”。
存储了 min 和 max 的值,但不存储 value 数组。
最佳答案
我将为 SampleValues 类创建一个代理
@Persistent(proxyFor = SampleValues.class)
public class SampleValuesProxy implements PersistentProxy<SampleValues>, Serializable {
....
}
实现
initializeProxy
convertProxy
newInstance
将 SampleValues 类转换为 SampleValuesProxy 类的实例方法。用简单的 [] 替换代理中的 ArrayList。
然后您需要将代理注册到 EntityModel 中
EntityModel model = new AnnotationModel();
model.registerClass(SampleValuesProxy.class);
并将模型放入 storeconfig
因此,当 berkleydb 去存储您的 SampleValues 对象时,它将其转换为代理类,并写入它(读取时反之亦然)
看类(class)
com.sleepycat.persist.impl.MapProxy
在 berkeleydb 源代码发行版中获取有关如何实现它的示例。
关于java - 如何在 Java Berkeley DB 中存储 ArrayList 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7373508/