我有两种模式:
public class User{
@Column(name="user_id)
private Long id;
private String name;
private String lastName;
}
public class Result{
private Long id;
private String score;
@ManyToOne
@JoinColumn(name = "client_id")
private User user;
}
所以一个用户可以有很多结果.. 现在,当我创建一个端点时,返回结果的findAll(),我得到JSON Result,如下所示:
[
{"Id":1,"user":{"id":1,"name":"Daniel","lastName":"Dan"},"score":"4"},
{"Id":2,"user":1,"score":"3",},
{"Id":3, "user":{"id:2", "name":"Laura","lastName":"Lau"},"score":"3"}
]
我所看到的是,当它是同一个用户对象两次时,它并没有给我用户的名字和姓氏。 只有当name和lastName(用户)发生变化时,才会得到名称。 我该怎么做才能获得用户信息? 我无法使它成为List,因为在其他方法中我访问了类似的元素 client.getName或client.getId,如果我有一个列表而不是对象,我就无法做到。
谢谢,如果我的问题没有明确定义,我会道歉
@RequestMapping(value="getAllResults",method=RequestMethod.GET)
public @ResponseBody List<Result> getResults(){
return resultService.findAll();
}
答案 0 :(得分:0)
您应该在User类中添加一个List或一组Results,以便每个User都能够引用其不同的结果。您还应该使用@OneToMany注释List。代码应如下所示
public class User{
@Column(name="user_id)
private Long id;
private String name;
private String lastName;
@OneToMany(mappedBy = "user", cascadeType = "CascadeType.ALL")
private List<Result> results;
}
public class Result{
private Long id;
private String score;
@ManyToOne
@JoinColumn(name = "client_id")
private User user;
}