【发布时间】:2019-05-22 19:01:57
【问题描述】:
我正在使用 Lombok 删除样板代码。我正在尝试将实体打印到控制台,但出现 StackOverflowError。该实体与另一个实体有双向关系,所以我想从 toString 方法中排除这个实体。
我的实体如下所示:
@Entity
@Data
public class Foo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long fooId;
private String name;
@ManyToOne
@JoinColumn(name = "barId")
@EqualsAndHashCode.Exclude
@ToString.Exclude
private Bar bar;
}
这是我第一次尝试使用@ToString.Exclude,但它似乎并没有表现出来。我使用不正确吗?当我在 Foo 对象上调用 toString 时,我只想打印出 fooId 和 name。
编辑
我熟悉从顶级 @ToString 注释中排除或包含字段的替代方法。我试图避免这种情况。我只想在类级别使用@Data,并注释应该排除的字段。
编辑 2
仍在简化类上进行复制。龙目岛版本 1.18.8。
【问题讨论】:
-
我不认为
@ToString.Exclude独立于@ToString工作。通过文档进行检查。 projectlombok.org/api/lombok/ToString.html -
@SubirKumarSao 感谢您的回复。将
@Data替换为@ToString并不能解决问题。 -
我们使用的版本 (1.16) 与 @ToString(exclude="bar") 配合使用
-
@TheGilbertArenasDagger
@Data包括@ToString所以你很擅长那个部分。