gpt4 book ai didi

java - com.fasterxml.jackson.databind.JsonMappingException : Multiple back-reference properties with name 'defaultReference'

转载 作者:行者123 更新时间:2023-11-30 06:48:42 27 4
gpt4 key购买 nike

当我试图将一个实体映射到多个实体时,出现此错误..

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

    package com.demo.project.premiumjobportal.model;    import java.io.Serializable;    import java.util.List;    import javax.persistence.CascadeType;    import javax.persistence.Column;    import javax.persistence.Entity;    import javax.persistence.FetchType;    import javax.persistence.GeneratedValue;    import javax.persistence.Id;    import javax.persistence.ManyToOne;    import javax.persistence.OneToMany;    import javax.persistence.Table;    import javax.validation.constraints.NotNull;    import javax.xml.bind.annotation.XmlRootElement;    import com.fasterxml.jackson.annotation.JsonBackReference;    import com.fasterxml.jackson.annotation.JsonIgnoreProperties;    //Candidate details table : Master Table    @Entity    @Table(name="candidate_profile")    @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})    @XmlRootElement    public class CandidateProfile implements Serializable {        private static final long serialVersionUID = 1L;        @Id        @GeneratedValue        private int id;        @NotNull        @Column(name="first_name", length = 25)        private String firstName;        @NotNull        @Column(name="last_name", length = 25)        private String lastName;        @NotNull        @Column(name="username", length = 50)        private String username;        @Column(name="alt_email_id", length = 50)        private String alternateEmailId;        @NotNull        @Column(name="mobile_no", length = 15)        private String mobileNum;        @Column(name="alt_mobile_no", length = 15)        private String alternateMobileNum;        @Column(name="ssc_board", length = 50)        private String sscBoard;        @Column(name="ssc_school", length = 50)        private String sscSchool;        @Column(name="ssc_percent", length = 4)        private float sscPercentage;        @Column(name="ssc_year_of_passout", length = 4)        private int sscYearOfPassout;        @Column(name="hsc_board", length = 50)        private String hscBoard;        @Column(name="hsc_school", length = 50)        private String hscSchool;        @Column(name="hsc_percent", length = 4)        private float hscPercentage;        @Column(name="hsc_year_of_passout", length = 4)        private int hscYearOfPassout;        @Column(name="grad_university", length = 100)        private String gradiduteUniversity;        @Column(name="grad_institute", length = 100)        private String gradiduteInstitute;        @Column(name="grad_percent", length = 4)        private float gradidutePercentage;        @Column(name="grad_year_of_passout", length = 4)        private int gradiduteYearOfPassout;        @Column(name="postgrad_university", length = 100)        private String postGradiduteUniversity;        @Column(name="postgrad_institute", length = 100)        private String postGradiduteInstitute;        @Column(name="postgrad_percent", length = 4)        private float postGradidutePercentage;        @Column(name="postgrad_year_of_passout", length = 4)        private int postGradiduteYearOfPassout;        private String notes;        private String Password;        @OneToMany(mappedBy = "candidateProfile", fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)        @JsonBackReference        private List experienceDetails;        @OneToMany(mappedBy = "candidateProfile", fetch = FetchType.LAZY,cascade = CascadeType.REMOVE)        @JsonBackReference        private List candidateJobs;        @ManyToOne        private Role roleName;        /* Constructor */        public CandidateProfile() {            super();            }        // Getters and Setters 

/// This is my experience details entity ////////////

    package com.cfa.project.premiumjobportal.model;    import java.io.Serializable;    import javax.persistence.Column;    import javax.persistence.Entity;    import javax.persistence.GeneratedValue;    import javax.persistence.Id;    import javax.persistence.ManyToOne;    import javax.persistence.Table;    import javax.xml.bind.annotation.XmlRootElement;    import com.fasterxml.jackson.annotation.JsonIgnoreProperties;    //Experience class, which connected with CandidateProfile.class    @Entity    @Table(name="experience_details")    @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})    @XmlRootElement    public class ExperienceDetails implements Serializable {        private static final long serialVersionUID = 1L;        @Id        @GeneratedValue        private int id;        @Column(name = "tot_experenice", length = 2)        private String totExperience;        @Column(name = "companies_month_experience")        private String companiesMonthExperience;        @Column(name = "skills")        private String _skills;        @Column(name = "extra_curricular")        private String extraCurricular;        private String notes;        /* Mapping : Joining with Candidate table */        @ManyToOne        private CandidateProfile candidateProfile;        /*Constructor*/        public ExperienceDetails() {            super();        }        /*Constructor using fields*/        /**         * @param id         * @param totExperience         * @param companiesMonthExperience         * @param _skills         * @param extraCurricular         * @param notes         * @param candidateProfile         */        public ExperienceDetails(int id, String totExperience, String companiesMonthExperience, String _skills,                String extraCurricular, String notes, CandidateProfile candidateProfile) {            super();            this.id = id;            this.totExperience = totExperience;            this.companiesMonthExperience = companiesMonthExperience;            this._skills = _skills;            this.extraCurricular = extraCurricular;            this.notes = notes;            this.candidateProfile = candidateProfile;        }        /* Generating Getters and setters */

/// This is my role entity //////

    import java.io.Serializable;    import java.util.List;    import javax.persistence.CascadeType;    import javax.persistence.Column;    import javax.persistence.Entity;    import javax.persistence.FetchType;    import javax.persistence.GeneratedValue;    import javax.persistence.Id;    import javax.persistence.OneToMany;    import javax.persistence.Table;    import javax.xml.bind.annotation.XmlRootElement;    import com.fasterxml.jackson.annotation.JsonBackReference;    import com.fasterxml.jackson.annotation.JsonIgnoreProperties;    @Entity    @Table(name="role")    @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})    @XmlRootElement    public class Role implements Serializable {        private static final long serialVersionUID = 1L;        @Id        @GeneratedValue        private int id;        @Column(length = 10)        private String name;        @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;

This error I'm getting----------------

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'

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

最佳答案

如果您在项目中的 getter/setter 方法中多次使用 @JsonBackReference,您应该使用特定的 Reference 名称来区分它们。

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;

你应该把它改成:

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

关于java - com.fasterxml.jackson.databind.JsonMappingException : Multiple back-reference properties with name 'defaultReference' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43973041/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com