无法正确连接Java中的两个表; DTO

时间:2018-06-22 09:10:31

标签: java join dto

我是DTO的新手,
在我的项目中,我有一个包含Team表(team_id,team_name)和User表(...,team_id)的数据库。关系:一个团队可以有很多用户。一个用户仅属于一个团队。 在我的课程中,我在User实体中添加了一个Team team属性,并且对这两个实体进行了一些Jpa注释。

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

当我从用户实体启动findall请求时,我得到一个带有团队对象的json作为响应。

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

    }
}

我的想法是在响应对象中仅获得一个团队名称,如下所示:

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

}

我尝试将字符串属性添加到我的用户类中,但告诉我该属性没有引用任何列,这是合理的。

等待您的建议 谢谢

1 个答案:

答案 0 :(得分:2)

您可以创建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结果。