gpt4 book ai didi

java - OrientDB (2.0.4) 自定义序列化器

转载 作者:太空宇宙 更新时间:2023-11-04 06:09:32 27 4
gpt4 key购买 nike

在使用 OrientDB 2.0.4 时,我遇到了以下问题:

我有以下类(class)

public class ClassA{

private String someData;
private ClassB embeddedClass;

}

public class ClassB implements Serializable{

private Integer someData;
private ClassC classToBeReferenced;

}

public class ClassC implements Serializable{

private Boolean someData;
}

虽然ClassC不应该嵌入到ClassB中,但是ClassB包含了ClassC的实际实例,这样人们就可以轻松地在ClassB上设置ClassC的实例(并且不必处理OrientDB来获取ClassC实例的RID)。

此设置的问题是,当序列化 ClassB 的实例时,OrientDB 将 ClassC 嵌入到 ClassB 中。为了避免这种情况,我为 ClassC 创建了一个自定义序列化器:

public class ClassCSerializer implements OObjectSerializer<ClassC, ORID> {

....

}

我现在的问题是,我找不到任何方法在任何地方注册序列化器。我找到 OObjectSerializer 自定义实现的解决方案的教程说序列化器应该在 OObjectSerializerContext 中注册。但是,我在类路径上找不到该类。我的类路径上有版本 2.0.4 的 orient-core、-client 和 -enterprise 模块。

有人可以帮我吗?

问候,帕斯卡

最佳答案

嗯,我不知道 2.0.4,但对于 2.0.10,OObjectSerializerContext 位于 orientdb-object-2.0.10.jar jar 中。

我在这里找到了如何使用它的示例: https://code.google.com/p/orient/issues/detail?id=299

OObjectSerializerContext serializerContext = new OObjectSerializerContext();
serializerContext.bind(new OObjectSerializer<DateTime, Long>() {

public Long serializeFieldValue(Object iPojo, String iFieldName, DateTime iFieldValue)
{
return iFieldValue.getMillis();
}

public DateTime unserializeFieldValue(Object iPojo, String iFieldName, Long iFieldValue)
{
return new DateTime(iFieldValue);
}

});
OObjectSerializerHelper.bindSerializerContext(null, serializerContext);

关于java - OrientDB (2.0.4) 自定义序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28903353/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com