java - java中无法正确连接两个表;数据传输组织

标签 java join dto

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

}

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

等待您的建议 谢谢

最佳答案

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

关于java - java中无法正确连接两个表;数据传输组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50984534/

相关文章:

MYSQL 一个表中的所有记录以及另一表中的最后一个连接记录

spring - 如何在后期初始化中保留不可为空的属性

c# - 有没有办法将键/值对列表转换为数据传输对象

java - 如何从 Java Servlet 将文件中的图像输出为 HTML <img>?

mysql - 根据日期(在表中)将 tableA 的列值设置为表的 id

mysql - 将表与表 1 中的所有元组连接起来,但仅连接表 2 中的 1 个匹配元组

c# - 根据 DTO、实体模型或其他东西验证服务层中的数据?

java多线程初学者问题

java - 在java中调用random类的random方法

java - 是否有与 @Assisted 等效的 javax.inject.*