Я начинаю использовать ArangoDB в качестве постоянного слоя для существующего Java SpringBoot (и SpringData) приложения.Существует много DTO, все из которых являются неизменяемыми классами (с использованием AutoValue).
Поэтому нет конструктора по умолчанию, и arango не может создать экземпляр dto для его заполнения из БД.
Можно ли сделать так, чтобы слой данных arango spring использовал Builder как способ создания экземпляра и заполнения класса (т. Е. Во время десериализации)
Можно ли использовать Джексона при использовании построителя dto при отмене вызова изjson, так что в качестве запасного варианта, можно ли настроить arango / java / springdata для использования jackson / json вместо velocypack ??
с благодарностью, Саймон
update1
Спасибо за быстрый ответ.Одна из сложностей, с которыми я сталкиваюсь, связана с автоматическим значением, сгенерированный конструктор будет закрытым, если есть конструктор.Я могу взять сгенерированный конструктор и получить конструктор, защищенный пакетами, но я также вижу это ...
com.arangodb.ArangoDBException: com.arangodb.velocypack.exception.VPackParserException: java.lang.InstantiationException: com.arangodb.springframework.core.convert.DBEntity
at com.arangodb.internal.util.ArangoDeserializerImpl.deserialize(ArangoDeserializerImpl.java:59) ~[arangodb-java-driver-4.4.0.jar:na]
at com.arangodb.internal.util.ArangoUtilImpl.deserialize(ArangoUtilImpl.java:92) ~[arangodb-java-driver-4.4.0.jar:na]
at com.arangodb.internal.ArangoExecutor.deserialize(ArangoExecutor.java:120) ~[arangodb-java-driver-4.4.0.jar:na]
.....
Caused by: com.arangodb.velocypack.exception.VPackParserException: java.lang.InstantiationException: com.arangodb.springframework.core.convert.DBEntity
at com.arangodb.velocypack.VPack.deserialize(VPack.java:398) ~[velocypack-1.1.0.jar:na]
at com.arangodb.internal.util.ArangoDeserializerImpl.deserialize(ArangoDeserializerImpl.java:55) ~[arangodb-java-driver-4.4.0.jar:na]
... 128 common frames omitted
Caused by: java.lang.InstantiationException: com.arangodb.springframework.core.convert.DBEntity
at java.lang.Class.newInstance(Class.java:427) ~[na:1.8.0_171]
at com.arangodb.velocypack.VPack.createInstance(VPack.java:488) ~[velocypack-1.1.0.jar:na]
at com.arangodb.velocypack.VPack.deserializeObject(VPack.java:450) ~[velocypack-1.1.0.jar:na]
at com.arangodb.velocypack.VPack.getValue(VPack.java:569) ~[velocypack-1.1.0.jar:na]
at com.arangodb.velocypack.VPack.deserialize(VPack.java:396) ~[velocypack-1.1.0.jar:na]
... 129 common frames omitted
Caused by: java.lang.NoSuchMethodException: com.arangodb.springframework.core.convert.DBEntity.<init>()
at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_171]
at java.lang.Class.newInstance(Class.java:412) ~[na:1.8.0_171]
... 133 common frames omitted
update2
Итак ...Оказывается, есть 2 разные проблемы, и ни одна из них на самом деле не является проблемой с реализацией данных arango sping (что мне кажется хорошим, лучше, чем то, что я видел для аналогичных БД документов / графиков смешанной модели) Во-первых, переделываем значение auto.класс для не использует сгенерированный построитель, означает, что сгенерированный класс защищен пакетом, и это работает хорошо, спасибо @Christian за это.
Второй - который я возьму кДругой вопрос - касается использования пружины (crudrepo) «save» для сохранения нового документа, но также для предоставления сгенерированного пользователем идентификатора.Эта проблема отличается от демаршаллинга до неизменного объекта, поэтому я начну новый вопрос для этого.