Может ли Джексон преобразовывать идентификаторы в объекты с помощью репозиториев данных Spring? - PullRequest
0 голосов
/ 16 октября 2019

Сегодня я хотел использовать Spring-Data-Web-Support внутри JSON-объекта, подобного этому.

@Entity
public class Player {
    private Integer id;
    private String firstName;
    private String lastName;
    private Team team;
}

@Entity
public class Team {
    private Integer id;
    private String name;
    private List<Player> members;
}

@RestController
public class Controller{
    @PostMapping("/team/")
    public Team save(@Requestbody Team team) {
        ...
    }
}

Я пытаюсь создать новую команду из существующих игроков. Поэтому я использовал следующий объект запроса:

{
    "name": "PowerRangers",
    "members": [1, 2, 3]
}

Я ожидал, что Джексон разрешит идентификаторы для соответствующих игроков в базе данных. Кажется, этого не происходит.

Может, кто-нибудь подскажет, как заставить это работать или покажет мне более элегантный способ решения проблемы?

1 Ответ

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

Вам может потребоваться изменить свой RequestBody, как показано ниже.

{
    "name": "PowerRangers",
    "members": [
        { "fisrstName" : "ABC",
          "lastName" : "XYZ",
          "id" : 1
        }, { ... }
    ]
}

Также Вам также необходимо ввести @ JsonBackReference / @ JsonManagedReference для сущностей, чтобы удалить двунаправленный поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...