我有这种情况:
public class Project{
private long id;
private List<User> users;
// other properties and getter setter etc
}
public class User{
@JsonView(MinimalUser.class)
private long id;
@JsonView(MinimalUser.class)
private String name;
private ComplexObject anything;
}
现在休息方法:
@JsonView(MinimalUser.class)
@GetMapping("/client/{id}")
public List<Project> findProjectsByClientId(@PathVariable long id) {
return projectService.findProjectsByClientId(id);
}
在这里,我只想用最少的用户对象初始化一个项目,但是什么都不会被初始化,因为我的项目中没有“MinimalUser.class”JsonView,因此它没有被初始化。
我不想将@JsonView 注释放在项目中的所有变量中,因为这将是矫枉过正。
如何告诉控制器仅将 @JsonView-Filtering/Serialization 应用于项目的用户(子)?
因为这个调用工作正常(我只得到必填字段):
@JsonView(MinimalUser.class)
@GetMapping("/minimal")
public List<User> findAllUsers() {
return userService.findAllUsers();
}