您当前的位置: 首页 >  json

梁同学与Android

暂无认证

  • 4浏览

    0关注

    618博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

com.fasterxml.jackson.databind.JsonMappingException: Multiple back-reference properties with name ‘d

梁同学与Android 发布时间:2020-04-17 13:17:04 ,浏览量:4

今天在写SpringBoot + JPA的时候报了以下的错误

com.fasterxml.jackson.databind.JsonMappingException: Multiple
back-reference properties with name ‘defaultReference’

说明:

如果在项目中的getter / setter方法中使用@JsonBackReference两次以上,那么您应该将它们与特定的引用名称进行区分.在最新版本中只允许使用一个“defaultReference”.

所以请看代码

SysUser表跟SysUserRole表有关联关系 SysUser表跟SysPlan表有关联关系 请看代码中的这两个注解

@JsonBackReference(value="user-role")对应SysUserRole表也有一个一样的注解在setSys_user()方法上
@JsonBackReference(value="user-span")对应SysPlan表也有一个一样的注解在setSys_user()方法上

SysUser表

@Entity
//实体与表名对应
@Table(name = "sys_user")
public class SysUser {
    @Id
    @Column(name = "user_id")
    private String userId;//用户编号(人员编号(实验室助理)等)
    private String userName;//用户名
    private String password;//密码
    private String major;//专业
    private String institute;//学院
    private String classes;//班级
    private String grade;//年级
    private String telephone;//手机号
    private String email;//邮箱
    private String imageId;//个人照片
    private String labId;//所属实验室
    /*
        配置一对多的关系-----Sys_User_Role
        cascade设置级联属性,同步添加,同步删除
    */
    @OneToMany(targetEntity = SysUserRole.class,cascade = CascadeType.ALL)
    @JoinColumn(name = "user_id",referencedColumnName = "user_id")//name代表外键的名称,referencedColumnName代表的是主表即当前表的主键名称
    private Set sys_user_roles = new HashSet();

    @OneToMany(mappedBy = "sysUser")//放弃外键的维护
    private Set sysPlans = new HashSet();

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public String getInstitute() {
        return institute;
    }

    public void setInstitute(String institute) {
        this.institute = institute;
    }

    public String getClasses() {
        return classes;
    }

    public void setClasses(String classes) {
        this.classes = classes;
    }

    public String getGrade() {
        return grade;
    }

    public void setGrade(String grade) {
        this.grade = grade;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getImageId() {
        return imageId;
    }

    public void setImageId(String imageId) {
        this.imageId = imageId;
    }

    public String getLabId() {
        return labId;
    }

    public void setLabId(String labId) {
        this.labId = labId;
    }

    public Set getSys_user_roles() {
        return sys_user_roles;
    }

    @JsonBackReference(value="user-role")
    public void setSys_user_roles(Set sys_user_roles) {
        this.sys_user_roles = sys_user_roles;
    }


    public Set getSysPlans() {
        return sysPlans;
    }
    @JsonBackReference(value="user-span")
    public void setSysPlans(Set sysPlans) {
        this.sysPlans = sysPlans;
    }
}

SysUserRole表

@Entity
@Table(name = "sys_user_role")
public class SysUserRole {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;//主键id
    private Integer roleId;//用户类型(1:实验技术员,2:实验室助理,:学工处人员;4系统用户(学生))

    //配置多对一关系--Sys_user
    @ManyToOne(targetEntity = SysUser.class,fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id",referencedColumnName = "user_id")
    private SysUser sys_user;


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getRoleId() {
        return roleId;
    }

    public void setRoleId(Integer roleId) {
        this.roleId = roleId;
    }


    public SysUser getSys_user() {
        return sys_user;
    }

    @JsonBackReference(value="user-role")
    public void setSys_user(SysUser sys_user) {
        this.sys_user = sys_user;
    }


}

SysPlan表

@Entity
@Table(name = "sys_plan")
public class SysPlan {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "recruit_id")
    private Integer recruitId;
    private String recruitName;
    private String positionRequire;
    private Integer recruitNum;
    private String positionName;
    private Integer state;
    private Integer enrolledNum;

  //  private Integer userId;

    @ManyToOne(targetEntity = SysUser.class,fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id",referencedColumnName = "user_id")
    private SysUser sysUser;
    // private Set sysEnrolls = new HashSet();

    public SysPlan() {
    }
    public Integer getRecruitId() {
        return recruitId;
    }
    public void setRecruitId(Integer recruitId) {
        this.recruitId = recruitId;
    }
    public String getRecruitName() {
        return recruitName;
    }
    public void setRecruitName(String recruitName) {
        this.recruitName = recruitName;
    }
    public String getPositionRequire() {
        return positionRequire;
    }
    public void setPositionRequire(String positionRequire) {
        this.positionRequire = positionRequire;
    }
    public Integer getRecruitNum() {
        return recruitNum;
    }
    public void setRecruitNum(Integer recruitNum) {
        this.recruitNum = recruitNum;
    }

    public String getPositionName() {
        return positionName;
    }

    public void setPositionName(String positionName) {
        this.positionName = positionName;
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    public Integer getEnrolledNum() {
        return enrolledNum;
    }

    public void setEnrolledNum(Integer enrolledNum) {
        this.enrolledNum = enrolledNum;
    }

    public SysUser getSysUser() {
        return sysUser;
    }
    @JsonBackReference(value="user-span")
    public void setSysUser(SysUser sysUser) {
        this.sysUser = sysUser;
    }

   /* public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }*/
}

既然使用了多次JsonBackReference()注解,那么我们就要加以区分

关注
打赏
1660730345
查看更多评论
立即登录/注册

微信扫码登录

0.0572s