Получение MappingException при десериализации массива объектов в Spring Mongo Connector - PullRequest
0 голосов
/ 20 октября 2019

У меня есть POJO

public class Model {
 String name;
}


    public class MyClass {
      @id
      String _id;
      ArrayList<Model> models;
    }

Я пытаюсь добавить еще одну запись в массив моделей с этим json -

{

  "models": [
    {
        "name" : "string"
    },
    {
        "name" : "string244"
    }
  ]
}

И это код Java для того же -

  @PutMapping("/myClass/{id}")
  public ResponseEntity<MyClass> addModel(@PathVariable("id") String recId,
      @Valid @RequestBody MyClass myClass)  {

    Query query = new Query(Criteria.where("_id").is(recId));
    Update update = new Update().push("models", myClass.models);
    MyClass myNewClass = mongoOperations.findAndModify(query, update, MyClass.class);
    return new ResponseEntity<>(myNewClass, HttpStatus.OK);
  }

Но Spring не может конвертировать мой JSON в MyClass POJO. Получение этого исключения -

org.springframework.data.mapping.MappingException: Cannot convert [Document{{name=string}}, Document{{name=string244}}] of type class java.util.ArrayList into an instance of class com.trustin.model.Model! Implement a custom Converter<class java.util.ArrayList, class com.trustin.model.Model> and register it with the CustomConversions. Parent object was: com.trustin.model.MyClass@335afcef -> null
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readCollectionOrArray(MappingMongoConverter.java:1099) ~[spring-data-mongodb-2.2.0.RELEASE.jar:2.2.0.RELEASE]

Как добавить еще один элемент в массив модели в моей коллекции?

1 Ответ

0 голосов
/ 20 октября 2019

Решено.

Использовать set вместо push-запроса.

...