Невозможно правильно соединить две таблицы в 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, который вы хотели.