com.fasterxml.jackson.databind.JsonMappingException:具有名称“defaultReference”的多个反向引用属性

Rak*_*mar 3 java spring hibernate

当我尝试将一个实体与多个实体映射时,我收到此错误..

/// 这是我的候选人资料实体/////////

    包 com.demo.project.premiumjobportal.model;

    导入 java.io.Serializable;
    导入 java.util.List;

    导入 javax.persistence.CascadeType;
    导入 javax.persistence.Column;
    导入 javax.persistence.Entity;
    导入 javax.persistence.FetchType;
    导入 javax.persistence.GeneratedValue;
    导入 javax.persistence.Id;
    导入 javax.persistence.ManyToOne;
    导入 javax.persistence.OneToMany;
    导入 javax.persistence.Table;
    导入 javax.validation.constraints.NotNull;
    导入 javax.xml.bind.annotation.XmlRootElement;

    导入 com.fasterxml.jackson.annotation.JsonBackReference;
    导入 com.fasterxml.jackson.annotation.JsonIgnoreProperties;

    //候选明细表:主表
    @实体
    @Table(name="candidate_profile")
    @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
    @XmlRootElement
    公共类 CandidateProfile 实现了 Serializable {

        private static final long serialVersionUID = 1L;

        @ID
        @GeneratedValue
        私有整数 ID;

        @NotNull
        @Column(name="first_name", 长度 = 25)
        私人字符串名字;

        @NotNull
        @Column(name="last_name", 长度 = 25)
        私人字符串姓氏;

        @NotNull
        @Column(名称=“用户名”,长度= 50)
        私人字符串用户名;

        @Column(name="alt_email_id", 长度 = 50)
        私人字符串alternateEmailId;

        @NotNull
        @Column(name="mobile_no", 长度 = 15)
        私人字符串 mobileNum;

        @Column(name="alt_mobile_no", 长度 = 15)
        私人字符串alternateMobileNum;


        @Column(name="ssc_board", 长度 = 50)
        私人字符串 sscBoard;


        @Column(name="ssc_school", 长度 = 50)
        私人字符串 sscSchool;


        @Column(name="ssc_percent", 长度 = 4)
        私人浮动 sscPercentage;


        @Column(name="ssc_year_of_passout", 长度 = 4)
        私人 int sscYearOfPassout;


        @Column(name="hsc_board", 长度 = 50)
        私人字符串 hscBoard;


        @Column(name="hsc_school", 长度 = 50)
        私人字符串 hscSchool;


        @Column(name="hsc_percent", 长度 = 4)
        私人浮动 hscPercentage;


        @Column(name="hsc_year_of_passout", 长度 = 4)
        私人 int hscYearOfPassout;


        @Column(name="grad_university", 长度 = 100)
        私人弦乐毕业生大学;


        @Column(name="grad_institute", 长度 = 100)
        私人字符串研究生院;


        @Column(name="grad_percent", 长度 = 4)
        私人浮动 gradidutePercentage;


        @Column(name="grad_year_of_passout", 长度 = 4)
        私人 int gradiduteYearOfPassout;

        @Column(name="postgrad_university", 长度 = 100)
        私人字符串后研究生大学;

        @Column(name="postgrad_institute", 长度 = 100)
        私人字符串 postGradiduteInstitute;

        @Column(name="postgrad_percent", 长度 = 4)
        私人浮动 postGradidutePercentage;

        @Column(name="postgrad_year_of_passout", 长度 = 4)
        private int postGradiduteYearOfPassout;

        私人字符串笔记;

        私人字符串密码;

        @OneToMany(mappedBy = "candidateProfile", fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)
        @JsonBackReference
        私单体验详情;

        @OneToMany(mappedBy = "candidateProfile", fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)
        @JsonBackReference
        私人名单候选人工作;

        @ManyToOne
        私人角色角色名称;



        /* 构造函数 */
        公共候选人档案(){
            极好的();
            }


        // 获取器和设置器 

/// 这是我的体验详情实体 ///////////

    包 com.cfa.project.premiumjobportal.model;

    导入 java.io.Serializable;

    导入 javax.persistence.Column;
    导入 javax.persistence.Entity;
    导入 javax.persistence.GeneratedValue;
    导入 javax.persistence.Id;
    导入 javax.persistence.ManyToOne;
    导入 javax.persistence.Table;
    导入 javax.xml.bind.annotation.XmlRootElement;

    导入 com.fasterxml.jackson.annotation.JsonIgnoreProperties;

    //经验类,与CandidateProfile.class相连
    @实体
    @Table(name="experience_details")
    @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
    @XmlRootElement
    公共类 ExperienceDetails 实现了 Serializable {

        private static final long serialVersionUID = 1L;

        @ID
        @GeneratedValue
        私有整数 ID;

        @Column(name = "tot_experenice", length = 2)
        private String totExperience;

        @Column(name = "companies_month_experience")
        私人弦乐公司月经历;

        @Column(name = "技能")
        私人字符串_skills;

        @Column(name = "extra_curricular")
        私人字符串课外活动;

        私人字符串笔记;

        /* 映射:加入候选表 */
        @ManyToOne
        私人 CandidateProfile 候选人资料;

        /*构造函数*/
        公共体验详情(){
            极好的();
        }


        /*构造函数使用字段*/
        /**
         * @param id
         * @param totExperience
         * @param companyMonthExperience
         * @param _skills
         * @param 课外活动
         * @param 注释
         * @paramCandidateProfile
         */
        public ExperienceDetails(int id, String totExperience, String companyMonthExperience, String _skills,
                String extraCurricular, String notes, CandidateProfileCandidateProfile) {
            极好的();
            this.id = id;
            this.totExperience = totExperience;
            this.companiesMonthExperience = CompaniesMonthExperience;
            this._skills = _skills;
            this.extraCurricular = 课外活动;
            this.notes = 笔记;
            this.candidateProfile =CandidateProfile;
        }

        /* 生成 Getter 和 setter */

/// 这是我的角色实体 /////

    导入 java.io.Serializable;
    导入 java.util.List;

    导入 javax.persistence.CascadeType;
    导入 javax.persistence.Column;
    导入 javax.persistence.Entity;
    导入 javax.persistence.FetchType;
    导入 javax.persistence.GeneratedValue;
    导入 javax.persistence.Id;
    导入 javax.persistence.OneToMany;
    导入 javax.persistence.Table;
    导入 javax.xml.bind.annotation.XmlRootElement;

    导入 com.fasterxml.jackson.annotation.JsonBackReference;
    导入 com.fasterxml.jackson.annotation.JsonIgnoreProperties;

    @实体
    @表(名称=“角色”)
    @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
    @XmlRootElement
    公共类角色实现了 Serializable {

        private static final long serialVersionUID = 1L;

        @ID
        @GeneratedValue
        私有整数 ID;

        @列(长度= 10)
        私人字符串名称;

        @OneToMany(mappedBy = "roleName", fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)
        @JsonBackReference
        私人名单候选人资料;

        @OneToMany(mappedBy = "companyRoleName", fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)
        @JsonBackReference
        私人名单招聘人员详细信息;

我得到这个错误----------------

Failed to evaluate Jackson deserialization for type [[simple type, class 
com.demo.project.premiumjobportal.model.CandidateProfile]]: 
com.fasterxml.jackson.databind.JsonMappingException: Multiple back-reference 
properties with name 'defaultReference'
Run Code Online (Sandbox Code Playgroud)

请帮我解决一下这个。我到处搜索并尝试了所有解决方案,但后来我也收到了这个错误。

Arj*_*jit 6

如果您在项目中的 getter/setter 方法上使用 @JsonBackReference 两次以上,则应使用特定的引用名称来区分它们。

Role实体类中,你用过@JsonBackReference两次

@OneToMany(mappedBy = "roleName", fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)
    @JsonBackReference
    private List candidateProfiles;

    @OneToMany(mappedBy = "companyRoleName", fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)
    @JsonBackReference
    private List recruiterDetails;
Run Code Online (Sandbox Code Playgroud)

你应该把它改成——

@OneToMany(mappedBy = "roleName", fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)
    @JsonBackReference(value="candidate-profiles")
    private List candidateProfiles;

    @OneToMany(mappedBy = "companyRoleName", fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)
    @JsonBackReference(value="recruiter-details")
    private List recruiterDetails;
Run Code Online (Sandbox Code Playgroud)