【问题标题】:Cannot join two tables in java correctly; DTO无法正确连接 java 中的两个表; DTO
【发布时间】:2018-06-22 09:10:30
【问题描述】:

我对 DTO 很陌生,
在我的项目中,我有一个包含 Team 表 (team_id, team_name) 和 User 表 (..., team_id) 的数据库。关系:一个团队可以有很多用户。一个用户只属于一个团队。 在我的课程中,我在 User 实体中添加了一个 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"

}

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

等待您的建议 谢谢

【问题讨论】:

标签: java join dto


【解决方案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 结果。

【讨论】:

  • 这个想法是从我的用户实体获得响应,因为我的应用程序的角度部分与用户类通信!
  • 嗯,JPA 的特性是从它的变量中获取所有值。抱歉,我能想到的解决方案是:在将 JSON 响应发送到客户端之前,是使用 DTO 还是操作它。
  • 你知道我如何从后面处理 JSON 吗?
  • 取决于您用来返回 JSON 响应的框架或库,这是使用 Java EE API 中的 JSON-P 的示例:adam-bien.com/roller/abien/entry/json_is_the_new_dto
猜你喜欢
  • 1970-01-01
  • 2019-10-19
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2015-03-17
  • 1970-01-01
相关资源
最近更新 更多