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 + '\'' +
                '}';
    }
}

 

posted @ 2021-02-22 14:26  尘世间迷茫的小书童  阅读(648)  评论(0编辑  收藏  举报