我使用Spring Boot REST Web服务和Angular 5作为前端,所以我有一个用于休眠的模型类:
@Entity
public class Title {
private Integer id;
private String name;
private Date releaseDate;
private Time runtime;
private String storyline;
private String picture;
private String rated;
private String type;
private Double rating;
private Integer numberOfVotes;
private Timestamp inserted;
private Set<Genre> genres = new HashSet<>();
private List<TitleCelebrity> titleCelebrities;
private List<TitleMedia> titleMedia;
// Basic getters and setter
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(name = "title_genre", joinColumns = { @JoinColumn(name = "title_id") }, inverseJoinColumns = { @JoinColumn(name = "genre_id") })
public Set<Genre> getGenres() {
return genres;
}
public void setGenres(Set<Genre> genres) {
this.genres = genres;
}
@OneToMany(mappedBy = "title", cascade = CascadeType.ALL)
public List<TitleCelebrity> getTitleCelebrities() {
return titleCelebrities;
}
public void setTitleCelebrities(List<TitleCelebrity> titleCelebrities) {
this.titleCelebrities = titleCelebrities;
}
@OneToMany(mappedBy = "title", cascade = CascadeType.ALL)
public List<TitleMedia> getTitleMedia() {
return titleMedia;
}
public void setTitleMedia(List<TitleMedia> titleMedia) {
this.titleMedia = titleMedia;
}
}
这是我的REST控制器
@RestController
@RequestMapping("titles")
@CrossOrigin(origins = {"http://localhost:4200"})
public class TitleController {
private TitleService titleService;
@Autowired
public void setTitleService(TitleService titleService) {
this.titleService = titleService;
}
// Api to get all the movies ordered by release date
@GetMapping("movies")
public List<Title> getAllMoviesOrderByReleaseDateDesc() {
return this.titleService.findByTypeOrderByReleaseDateDesc("movie");
}
@GetMapping("movies/{id}")
public Title findById(@PathVariable Integer id) {
return this.titleService.findById(id);
}
}
我想要的是,当我向第一个方法“ / movies”发出请求时,我不希望收集Telemedia,但是如果我向第二个方法“ / movies / id”发出请求,则我希望进行收集Telemedia。
当然,无论请求是什么,注释@JsonIgnore
都会忽略该集合。
答案 0 :(得分:1)
在这种情况下,最好创建两个模型;一个代表第一响应,另一个代表第二响应。
您还可以在第二个请求中将集合设置为null
,然后再将其发送回。
您不能仅凭@JsonIgnore
完成此操作,因为您不能在注释中执行条件逻辑。