无法评估表达式方法引发了“java.lang.StackOverflowError”异常。

有一天我正在与一个问题作斗争。所以让我们开始吧。我有 3 个类,例如标签、优惠和动物


@Data

@Builder

@AllArgsConstructor

@NoArgsConstructor

@Entity

@Table(name = "animals")

public class Animal {


@Id

@GeneratedValue(strategy = GenerationType.AUTO)

@Column(name = "animal_id")

private Long id;


@Column(name = "name")

@NotNull

private String name;


@Column(name = "description")

@NotNull

private String text;


@Column(name = "quantity")

@NotNull

private int count;



@ManyToOne(fetch = FetchType.EAGER)

@JoinColumn(name = "user_id", nullable = false)

private User user;


@ManyToOne(fetch = FetchType.EAGER)

@JoinColumn(name = "tag_id", nullable = false)

private Tag tags;



@OneToOne(fetch = FetchType.EAGER)

@JoinColumn(name = "offer_id", nullable = true)

private Offer offer;

优惠


@Data

@Builder

@AllArgsConstructor

@NoArgsConstructor

@Entity

@Table(name = "offer")

public class    Offer {



@Id

@GeneratedValue(strategy = GenerationType.AUTO)

@Column(name = "offer_id")

private Long id;


@Column(name = "title")

@NotNull

private String title;


@Column(name = "description")

@NotNull

private String text;



@Column(name = "price")

@NotNull

private int price;


@Column(name = "contact")

@NotNull

private int contact;


@Temporal(TemporalType.TIMESTAMP)

@Column(name = "create_date", nullable = false, updatable = false)

@CreationTimestamp

private java.util.Date createDate;




@ManyToOne(fetch = FetchType.EAGER)

@JoinColumn(name = "user_id", nullable = false)

private User user;



@ManyToOne(fetch = FetchType.EAGER)

@JoinColumn(name = "tag_id", nullable = false)

private Tag tags;



@OneToOne(fetch = FetchType.EAGER)

@JoinColumn(name = "animal_id", nullable = false)

private Animal animal;


德玛西亚99
浏览 300回答 2
2回答

慕莱坞森

toString()类中的方法Animal会导致此问题。方法交替地构建返回字符串,Animal并且Tag类都相互引用,从而产生无限过程。摆脱@Data注释(包括@ToString注释),并自己实现toString()方法。

慕丝7291255

如果您使用的是龙目岛,只需添加;@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = false)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java