lombok插件生成toString方法死循环
问题:
使用SpringBoot Jpa时,对象与对象有一对一、一对多、多对多关系时,使用lombok组件@Data注解生成get、set、toString、hashCode、equals方法,会产生死循;是因为lomok插件生成的toString方法会产生死循环,需要自己重写toString方法;
问题截图:
解决方案:
不使用lomok插件的@Data、@toString、@EqualsAndHashCode注解,重写toString方法;
代码示例:
班级表:
import lombok.Data; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.util.Set; /** * 类描述:班级 */ //@Data @Setter @Getter @Entity @Table(name = "sys_class") public class Class extends BaseEntity { @Column(name = "classNo", length = 30) private String classNo; @Column(name = "headTeacher", length = 30) private String headTeacher; /** * 多个学生对应一个班级 */ @OneToMany(targetEntity = Student.class) @JoinColumn(name = "stu_id", referencedColumnName = "gid") private Set<Student> studentSet; @Override public String toString() { return "Class{" + "gid='" + gid + '\'' + ", classNo='" + classNo + '\'' + ", headTeacher='" + headTeacher + '\'' + ", studentSet=" + studentSet.size() + ", createBy='" + createBy + '\'' + ", editBy='" + editBy + '\'' + ", createTime=" + createTime + ", editTime=" + editTime + ", isDelete=" + isDelete + ", isActive=" + isActive + ", remark='" + remark + '\'' + '}'; } }
学生表:
import lombok.Data; import lombok.Getter; import lombok.Setter; import javax.persistence.*; /** * 类描述:学生 */ //@Data @Setter @Getter @Entity @Table(name = "sys_student") public class Student extends BaseEntity { @Column(name = "stuNo", length = 30) private String stuNo; @Column(name = "stuName", length = 30) private String stuName; @Column(name = "stuAge", length = 3) private Integer stuAge; /** * 一个班级对应多个学生 */ @ManyToOne(targetEntity = Class.class) @JoinColumn(name = "class_id", referencedColumnName = "gid") private Class aClass; @Override public String toString() { return "Student{" + "gid='" + gid + '\'' + ", stuNo='" + stuNo + '\'' + ", stuName='" + stuName + '\'' + ", stuAge=" + stuAge + ", aClass=" + aClass + ", createBy='" + createBy + '\'' + ", editBy='" + editBy + '\'' + ", createTime=" + createTime + ", editTime=" + editTime + ", isDelete=" + isDelete + ", isActive=" + isActive + ", remark='" + remark + '\'' + '}'; } }