Spring Data Mongodb Использование типа объекта для сбора - PullRequest
0 голосов
/ 14 февраля 2019

Оповещение новичка!

Я только что установил mongodb 2 дня назад и начал создавать REST API за весну.

Итак, у меня есть коллекция userinfo, где пример документа будет выглядеть как

{"_id":"5c62588e5e1fbc37dc9746d3","name":{"first":"rajan","last":"rawat"},"age":32}

Я создал поле name как тип объекта в коллекции.

Теперь создаем для него класс сущности в java

@Document(collection = "userinfo")
 public class UserInfo {

    @Id
    private String id;
    private Name name;
    private int age;
}

, гдеИмя класса

public class Name {

    private String firstName;
    private String lastName;
}

При запуске API я получаю ответ:

{"id": "5c62588e5e1fbc37dc9746d3", "name": {"firstName":null, "lastName": null}, "age": 32}

Если я изменю тип в классе UserInfo на строковый,

@Document(collection = "userinfo")
public class UserInfo {

    @Id
    private String id;
    private String name;
    private int age;
}

Ответ изменится на

{"id": "5c62588e5e1fbc37dc9746d3", "name": "{\" first \ ": \" rajan \ ", \" last \ ": \" rawat \ "}", "age ": 32}

, который в основном дает строковое представление объекта из коллекции.

Мои вопросы.

  1. Что-то не так скак я разработал коллекцию яn mongoDB.Я предполагаю, что мой вариант использования является причиной, по которой тип Object был бы введен.
  2. Как мне отобразить эту коллекцию в java, то есть @Document.Что мне не хватает?Что-то еще нужно настроить в Имя класса

1 Ответ

0 голосов
/ 15 февраля 2019

В вашем документе ваши атрибуты name имеют имя "first" и "last", поэтому в вашем классе Name вам нужно использовать те же имена, чтобы объект можно было сопоставить с помощью spring.

просто попробуйте это:

имя публичного класса {

private String first;
private String last;

}

...