循环进入实体休眠状态

时间:2018-12-11 10:48:29

标签: java spring hibernate lombok intellij-lombok-plugin

我有两个实体,当我想获取grade.getSubcompetence()时。保存实体时发生错误,因为子权限数据为null。调试时出现错误:

  

'java.lang.StackOverflowError'异常。无法评估_ $$ _ jvstea5_f.toString()

等级实体:

@Entity
@Data
@NoArgsConstructor
@ToString(exclude = {"subcompetence"})
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Table(name = "GRADE")
public class Grade {
    @JsonBackReference
    @ManyToOne(
            fetch = FetchType.LAZY,
            optional = false)
    @JoinColumn(name = "SUBCOMPETENCE_ID", nullable = false)
    private Subcompetence subcompetence;

    @JsonBackReference
    @ManyToOne(
            fetch = FetchType.LAZY,
            optional = false)
    @JoinColumn(name = "LEVEL_ID", nullable = false)
    private Level level;
}

子权限实体:

@Entity
@Data
@NoArgsConstructor
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Table(name = "SUBCOMPETENCE")
public class Subcompetence {

    @JsonManagedReference
    @OneToMany(
            mappedBy = "subcompetence",
            fetch = FetchType.LAZY,
            cascade = CascadeType.ALL)
    private List<Grade> grades;
}

2 个答案:

答案 0 :(得分:1)

尝试在“子能力”课程中添加@EqualsAndHashCode(exclude="grades")

答案 1 :(得分:0)

像下面一样添加添加@EqualsAndHashCode(callSuper=false)JsonIgnore

  @OneToMany(
            mappedBy = "subcompetence",
            fetch = FetchType.LAZY,
            cascade = CascadeType.ALL)
@JsonIgnore
private List<Grade> grades;