spring - spring boot 动态忽略字段 jpa
问题描述
我正在使用 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
无论请求是什么,注释都会忽略集合。
解决方案
在这种情况下,创建两个模型可能会更好;一个代表第一个响应,另一个代表第二个响应。
null
您还可以在发送回之前将集合设置为您的第二个请求。
您无法@JsonIgnore
单独完成此操作,因为您无法在注释中执行条件逻辑。
推荐阅读
- python - 在 MySQL 中按文件扩展名过滤
- javascript - 在 React.tsx 中使用 createContext 传递 useState
- sql - oracle sql包含
- python - 列 2D 张量乘以行 2D 张量等于 3d pytorch 张量
- ajax - 如何使用codeigniter在ajax成功中显示数组结果?
- microsoft-teams - 如何将图像添加到本地应用的 Teams 应用清单
- batch-file - 如何检查 zoom.exe 是否仍在运行以及是否要杀死它
- javascript - Jest 如何测试调用函数的行?
- symfony - Symfony 4.4 - “找不到“GET /”的路由”
- django - django celery 异步文件保存到存储