微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Hibernate不断循环获取objcets

如何解决Hibernate不断循环获取objcets

我想我在Hibernate以及我如何编写实体方面做错了,因为当我尝试获取一个包含另一个对象的对象时,它们开始一遍又一遍地相互理解。同样,在调用应该返回字符串中所有字段的toString方法时,我也遇到了stackoverflow错误

Instructor只能有一个InstructorDetail和多个Course,它的运行情况与预期的差不多,但是有些问题。

教练班

@Entity
@Table(name="instructor_table")
public class Instructor {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="instructor_id")
    private int instructorId;
    
    @Column(name="instructor_name")
    private String instructorName;
    
    @OnetoOne(mappedBy="instructor",cascade = CascadeType.PERSIST)
    private InstructorDetail instructorDetail;
    
    @OnetoMany(mappedBy="instructor",cascade = CascadeType.PERSIST)
    private List<Course> courses;

InstructorDetail类

@Entity
@Table(name="instructor_detail_table")
public class InstructorDetail {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="instructor_detail_id")
    private int instructorDetailId;
    
    @Column(name="instructor_class")
    private String instructorDetailClass;
    
    @OnetoOne(cascade = CascadeType.PERSIST)
    @JoinColumn(name="instructor_id")
    private Instructor instructor;
    

课程课程

@Entity
@Table(name="course_table")
public class Course {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="course_id")
    private int courseId;
    
    @Column(name="course_class")
    private String course_class;
    
    @ManyToOne(cascade = CascadeType.PERSIST)
    @JoinColumn(name="instructor_id")
    private Instructor instructor;

Endless loop getting entities on Imgur.

解决方法

您已在两个方向上定义了关系,因此尝试递归评估每个属性始终是一个无限循环。

instructor -> instructorDetail -> instructor -> instructorDetail -> ...

您需要从toStringequalshashCode实现中排除其中一个指示,否则,请更改它们以打破链条。哪种方法取决于您,以及对象相等性的定义。

或者,只是不要在两个方向上都定义它们。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。