在使用OrientDB 2.0.4时遇到了以下问题:
我有以下课程
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在ClassB中嵌入ClassC。为了避免我为ClassC创建自定义序列化程序:
public class ClassCSerializer implements OObjectSerializer<ClassC, ORID> {
....
}
我现在的问题是,我找不到任何方法在任何地方注册序列化器。我在OObjectSerializer的自定义实现中找到解决方案的教程说,序列化程序应该在OObjectSerializerContext中注册。但是,我在类路径上找不到类。我在类路径上的版本2.0.4中有orient-core,-client和-enterprise模块。
有人可以帮助我吗?
此致 帕斯卡
答案 0 :(得分:1)
我不知道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);