com.fasterxml.jackson.databind.JsonMappingException: Multiple back-reference properties with name ‘d
生活随笔
收集整理的這篇文章主要介紹了
com.fasterxml.jackson.databind.JsonMappingException: Multiple back-reference properties with name ‘d
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天在寫SpringBoot + JPA的時候報了以下的錯誤
com.fasterxml.jackson.databind.JsonMappingException: Multiple back-reference properties with name ‘defaultReference’說明:
如果在項目中的getter / setter方法中使用@JsonBackReference兩次以上,那么您應該將它們與特定的引用名稱進行區分.在最新版本中只允許使用一個“defaultReference”.
所以請看代碼
SysUser表跟SysUserRole表有關聯關系
SysUser表跟SysPlan表有關聯關系
請看代碼中的這兩個注解
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_Rolecascade設置級聯屬性,同步添加,同步刪除*/@OneToMany(targetEntity = SysUserRole.class,cascade = CascadeType.ALL)@JoinColumn(name = "user_id",referencedColumnName = "user_id")//name代表外鍵的名稱,referencedColumnName代表的是主表即當前表的主鍵名稱private Set<SysUserRole> sys_user_roles = new HashSet<SysUserRole>();@OneToMany(mappedBy = "sysUser")//放棄外鍵的維護private Set<SysPlan> 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<SysUserRole> getSys_user_roles() {return sys_user_roles;}@JsonBackReference(value="user-role")public void setSys_user_roles(Set<SysUserRole> sys_user_roles) {this.sys_user_roles = sys_user_roles;}public Set<SysPlan> getSysPlans() {return sysPlans;}@JsonBackReference(value="user-span")public void setSysPlans(Set<SysPlan> sysPlans) {this.sysPlans = sysPlans;} }SysUserRole表
@Entity @Table(name = "sys_user_role") public class SysUserRole {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id;//主鍵idprivate 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<SysEnroll> 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()注解,那么我們就要加以區分
總結
以上是生活随笔為你收集整理的com.fasterxml.jackson.databind.JsonMappingException: Multiple back-reference properties with name ‘d的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FetchType.LAZY和Fetch
- 下一篇: JPA-CascadeType四个属性的