«Не удалось десериализовать объект. Не удалось преобразовать значение типа java.lang.Строка для двойной базы огня — Firestore

# #java #spring #firebase #google-cloud-firestore

#Ява #весна #огневая база #google-облако-firestore

Вопрос:

У меня есть приложение в spring boot и firestore в качестве базы данных.

Поскольку в firestore есть некоторые особенности хранения денег, я создал MoneyVO. Но сейчас я застрял, потому что пытаюсь извлечь данные из базы данных, и она не может десериализовать этот объект.

Вот отпечаток объекта в firestore: введите описание изображения здесь

И это мой класс:

 @Data @AllArgsConstructor @NoArgsConstructor public class MoneyVO implements Serializable {   private String value;  private CurrencyEnum currency; }  

А вот метод обслуживания, который извлекает данные:

 @GetMapping  public Pagelt;Productgt; findAll(@RequestBody FilterDTO filter){  return QueryUtil.getPage(productRepository.findAll(), filter);  }   

Это модельный продукт:

 @Data @Builder @NoArgsConstructor @AllArgsConstructor @Document(collectionName = "productCollection") public class Product extends BaseEntity{   private String name;   private UnityMeasurement unityMeasurement;    private Integer unityMeasurementQuantity;   private MoneyVO value; /// Here are the field that cannot be desserialized   private Float amount; }  

Сообщение об ошибке выглядит так:

«сообщение»: «Не удалось десериализовать объект. Не удалось преобразовать значение типа java.lang.Строка для удвоения (находится в поле ‘значение.ценность’)»,

Я действительно застрял. Как я могу десериализовать этот объект?

Комментарии:

1. Снимок экрана value.value в вашей базе данных и в MoneyVO классе-это строка, поэтому я не думаю, что это вызовет проблему. Вы уверены, что исключение исходит от этого класса и данных?