ArangoDB,爪哇,Velocypack错误试图反序列化DBEntity(ArangoDB, J

2019-10-31 06:44发布

我使用SpringBoot 1.5.4.RELEASE,ArangoDB Java驱动程序4.5.0,阿朗戈春数据1.1.5

检索对象时,我得到这个错误。

com.arangodb.velocypack.exception.VPackParserException: java.lang.InstantiationException: com.arangodb.springframework.core.convert.DBEntity

我无法找到问题的根源,但(仍然在寻找),但我能看到被抛出的错误,在类VPACK有这种方法

private <T> T createInstance(final Type type) throws InstantiationException, IllegalAccessException {
  final T entity;
  final VPackInstanceCreator<?> creator = instanceCreators.get(type);
  if (creator != null) {
    entity = (T) creator.createInstance();
  } else if (type instanceof ParameterizedType) {
    entity = createInstance(((ParameterizedType) type).getRawType());
  } else {
    entity = ((Class<T>) type).newInstance();
  }
  return entity;
}

但在被传递的类型是所述接口 com.arangodb.springframework.core.convert.DBEntity 。 没有创造者这一点,它不是一个参数化类型,这样的newInstance被调用。 这当然会失败。

这似乎发源于ArangoTemplate在find方法。 这里是DBEntity.class正在被通过。

  @Override
  public <T> Optional<T> find(final String id, final Class<T> entityClass, final DocumentReadOptions options)
      throws DataAccessException {
    try {
      final DBEntity doc = _collection(entityClass, id).getDocument(determineDocumentKeyFromId(id),
        DBEntity.class, options);
      return Optional.ofNullable(fromDBEntity(entityClass, doc));
    } catch (final ArangoDBException e) {
      throw translateExceptionIfPossible(e);
    }
  }

我想创建一个测试,会产生这种需求。 如果我成功了,我将张贴在这里。

谢谢,
西蒙

Answer 1:

这个通常不应该发生,因为存在对DBEntity VPackDeseralizer 。 你也许已经覆盖AbstractArangoConfiguration.arangoTemplate() 在这种情况下,你已经删除了底层驱动程序需要的配置。



文章来源: ArangoDB, Java, Velocypack error trying to deserialize a DBEntity