如何在 Java Berkeley DB 中存储 ArrayList 字段?

发布于 2024-12-03 16:21:41 字数 502 浏览 2 评论 0原文

我在 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 数组不被存储。

I have this structure in Java to be stored in berkeley DB using TupleSerialBinding:

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>();
}

The key is the min value which is created using a class to make an EntryBinding.
After I create an EntityBinding based on SamplesValues

I didn't find how to store the "values array" using TupleSerialBinding.

The values of min and max are stored, but the values array is not.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

百变从容 2024-12-10 16:21:41

我将为 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对象时,它将其转换为代理类并写入它(读取时反之亦然)

看看 berkeleydb 源代码发行版中的类

com.sleepycat.persist.impl.MapProxy

,了解如何实现它的示例。

I would create a Proxy for the SampleValues class as

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

implementing the

initializeProxy
convertProxy
newInstance

instance methods to convert your SampleValues class to a SampleValuesProxy class. Substituting a simple [] for the ArrayList in the proxy.

then you need to register the proxy with the EntityModel as

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

and put the model in the storeconfig

So then when berkleydb goes to store your SampleValues object, it converts it to the proxy class, and writes it (and when reading vice-versa)

Look at the class

com.sleepycat.persist.impl.MapProxy

in the berkeleydb source distribution for an example on how to implement it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文