Mez*_*zoo 13 hibernate spring-data-jpa
我已经@JsonIdentityInfo通过Baeldung的博客1解决了JSON递归循环(谢谢)
但是现在,另一个错误发生了:
Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate com.mezoo.tdc.model.Payment.toString()
Run Code Online (Sandbox Code Playgroud)
这是我的注册对象:
@Entity
@Table(name="Registration")
@JsonIdentityInfo( generator = ObjectIdGenerators.PropertyGenerator.class, property = "uuid")
public class Registration implements Serializable {
/*some private variables..*/
// Bidirectional relationship
@OneToMany(mappedBy="registration", cascade = {CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.MERGE}, fetch = FetchType.LAZY)
private List<Payment> payment;
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("payment", payment)
.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,付款对象:
@Entity
@Table(name="Payment")
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "uuid")
public class Payment implements Serializable {
@ManyToOne
@JoinColumn(name = "registration")
private Registration registration;
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("registration", registration)
.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我在调试器中看到的内容:
拜托,怎么了?为什么?
Ris*_*wal 11
删除toString方法。
如果您使用的是龙目岛:
检查您可能正在使用lombok中的@Data注释的Entity / DAO类,该注释默认情况下包含getter和setter。更改为,以防万一,并删除注释。@Getters@Setter@Data
好吧,我的猜测是Registration.toString()打印列表中每笔付款Payment.toString()的字符串表示形式Registration,由于包含的字符串表示形式,Registration.toString()再次被调用,依次又被调用Payment.toString(),依此类推。
尝试返回一个空字符串Payment.toString()以查看问题是否消失。
| 归档时间: |
|
| 查看次数: |
7925 次 |
| 最近记录: |