Невозможно правильно соединить две таблицы в Java; DTO

Я очень плохо знаком с DTO,
В моем проекте у меня есть база данных с таблицей Team (team_id, team_name) и таблицей User (..., team_id) . Отношение: команда может иметь много пользователей. пользователь принадлежит только одной команде. В моих классах я добавил атрибут Team team в сущности User и сделал несколько аннотаций Jpa для обеих сущностей.

    @ManyToOne
    @JoinColumn(name = "id_team")
    private Team team;

Когда я запускаю запрос findall от моего пользовательского объекта, я получаю в ответ json с командой Object.

{
    ...
    "id_team": 1,
    "team": {
        "id": 1,
        "name": "team1"

    }
}

Моя идея - получить только имя команды в объекте ответа, например так:

 {
    ...
    "id_team": 1,
    "team_name": "team1"

}

Я попытался добавить строковый атрибут в свой класс пользователя, но он говорит мне, что ни один столбец не ссылается на этот атрибут, что является разумным.

Жду ваших предложений Спасибо

1 ответ

Вы можете создать класс DTO, например, UserDTO:

public class UserDTO {
    private String idTeam;
    private String team;

    public UserDTO(String idTeam, String team) {
        this.idTeam = idTeam;
        this.team = team;
    }

    /* getter and setter ommited */
}

Затем создайте сервис для извлечения данных и возврата их как UserDTO.

public UserDTO convertUser() {
   // The userService is an example.
   User user = userService.findAll();
   return new UserDTO(user.getIdTeam(), user.getTeam().getTeamName());
}

С UserDTO вы получите результат JSON, который вы хотели.

Другие вопросы по тегам