我的项目使用SpringBoot,它具有双向映射@OneToMany
@Entity
@Table(name = "T_S")
@Getter
@Setter
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class S implements Serializable {
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@JoinColumn(name = "something", referencedColumnName = "A_ID", nullable = false, insertable = false, updatable = false)
@OptimisticLock(excluded = false)
private Set<A> act = new HashSet<>();
....something...
}
@Entity
@Table(name = "T_A")
@Getter
@Setter
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class A{
@ManyToOne(optional = true, fetch = FetchType.LAZY)
@JoinColumn(name = "A_ID", insertable = false, updatable = false)
private S sub;
}
当我从存储库获取数据时,它会无限循环。如何修复它?
如果你有 Lombok 等价的双向关系,
hashCode 和 toString 将创建 StackOverflowError。
因此删除@ToString和@EqualsAndHashCode。
我一般认为,在使用 JPA 时,应该在唯一的业务键上实现 equals 和 hashCode。
另一种方法是从 Lombok 中排除某些属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)