私はこのケースを持っています:
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);
}
ここでは、最小限の Users オブジェクトで初期化されたプロジェクトが必要ですが、プロジェクトに "MinimalUser.class" JsonView がないため、何も初期化されないため、初期化されません。
プロジェクト内のすべての変数に @JsonView アノテーションを付けたくありません。これはやり過ぎになるからです。
@JsonView-Filtering/Serialization をプロジェクトのユーザー(子)にのみ適用するようにコントローラーに指示するにはどうすればよいですか?
この呼び出しは正常に機能するため (必要なフィールドのみを取得します):
@JsonView(MinimalUser.class)
@GetMapping("/minimal")
public List<User> findAllUsers() {
return userService.findAllUsers();
}