Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 忽略Spring引导中特定请求中的字段_Java_Spring_Rest_Spring Boot - Fatal编程技术网

Java 忽略Spring引导中特定请求中的字段

Java 忽略Spring引导中特定请求中的字段,java,spring,rest,spring-boot,Java,Spring,Rest,Spring Boot,我使用Spring Boot REST Web服务和Angular 5作为前端,我有如下hibernate的模型类: @Entity public class Title { private Integer id; private String name; private Date releaseDate; private Time runtime; private String storyline;

我使用Spring Boot REST Web服务和Angular 5作为前端,我有如下hibernate的模型类:

@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;
        }
    }
@实体
公开课名称{
私有整数id;
私有字符串名称;
私人日期发布日期;
私有时间运行时;
私人字符串故事情节;
私有字符串图片;
私人字符串额定值;
私有字符串类型;
私人双重评级;
私人整数票;
插入私有时间戳;
私有集类型=新HashSet();
私人名单所有权;
私人列表标题媒体;
//基本的接受者和接受者
@ManyToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE})
@JoinTable(name=“title\u-genre”,joinColumns={@JoinColumn(name=“title\u-id”)},inverseJoinColumns={@JoinColumn(name=“genre\u-id”)})
公共集getGenres(){
回归体裁;
}
公共无效集合类型(集合类型){
this.genres=流派;
}
@OneToMany(mappedBy=“title”,cascade=CascadeType.ALL)
公共列表getTitleCelebrities(){
归还所有权;
}
公共无效设置标题(列表标题){
this.titleCelebrities=titleCelebrities;
}
@OneToMany(mappedBy=“title”,cascade=CascadeType.ALL)
公共列表getTitleMedia(){
返回标题媒体;
}
公共无效集合标题媒体(列表标题媒体){
this.titleMedia=titleMedia;
}
}
这是我的休息控制器

@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);
    }

}
@RestController
@请求映射(“标题”)
@交叉原点(原点={”http://localhost:4200"})
公共类标题控制器{
私人产权服务产权服务;
@自动连线
公共无效setTitleService(TitleService TitleService){
this.titleService=titleService;
}
//Api以获取按发行日期订购的所有电影
@GetMapping(“电影”)
公共列表getAllMoviesOrderByReleaseDateDesc(){
返回此.titleService.findByTypeOrderByReleaseDateDesc(“电影”);
}
@GetMapping(“movies/{id}”)
公共标题findById(@PathVariable整数id){
返回这个.titleService.findById(id);
}
}
我想要的是,当我向第一个方法“/movies”发出请求时,我不想要标题媒体的集合,但如果我向第二个方法“/movies/id”发出请求,我想要标题媒体的集合。
当然,无论请求是什么,注释
@JsonIgnore
都将忽略集合。

各种选项:

  • 在不需要集合的方法中,将列表放入变量中,然后将集合设置为null进行循环

  • 创建一个扩展标题的新对象,并在该新对象中再次放置该字段 @杰索尼奥雷 私人列表标题媒体; 这应该忽略你想要的方式。您可以使用lambda通过在返回子类之前对其进行强制转换来构建子类的列表

  • 创建一个包含所有字段的新对象,除了您不想要的字段,该字段具有一个接受Title对象的构造函数,然后费力地从传入的Title对象设置所有这些字段


  • 您可以在服务层执行上述操作之一,尽管我的首选选项(子类中的jsonignore)可能应该在web层执行

    你应该把答案包装起来。如果需要,请将列表包含在包装器中,如果不需要,请将其排除:)我是spring boot新手,是否有任何资源可以实现这一点?谢谢@DaisyDay