我对 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/