我正在尝试更改一个使用Java序列化作为使用ArangoDB的持久性机制的旧式整体应用程序。
在持久化包含其他对象的对象时遇到问题,因为这会导致以下异常:
VPackValueTypeException:预期类型为OBJECT`
我使用的是Arango的Java驱动程序,而不是Arango的spring数据。
我尝试使用Arango的默认序列化以及编写自己的序列化程序,与此同时,我也尝试使用Jackson作为序列化程序。
下面是我的一个序列化器的示例。
public class ArangoDbChunkSerializer extends ArangoDbSerializerDeserializer implements VPackSerializer<Chunk>
{
protected static final String CHUNK_NAME = "chunk";
protected static final String CHUNK_SIZE = "chunkSize";
protected static final String ITEMS = "items";
@Override
public void serialize(VPackBuilder builder, String attribute, Chunk value, VPackSerializationContext context)
throws VPackException
{
builder.add(attribute, ValueType.OBJECT, false);
builder.add(SERIALIZABLE_CLASS_NAME, value.getSerializableClassName());
builder.add(CHUNK_SIZE, value.getChunkSize());
VPack vPack = new VPack.Builder()
.registerSerializer(Row.class, new ArangoDbRowSerializer())
.build();
VPackSlice vPackSlice = vPack.serialize(value.getItems());
builder.add(vPackSlice);
builder.close();
}
}
该异常发生在内部
builder.close();
任何帮助都会很棒-感谢您阅读此内容:)