我正在使用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;
}
Run Code Online (Sandbox Code Playgroud)
这是我第一次尝试使用@ToString.Exclude它,但似乎没有表现。我使用不正确吗?我只想打印出来fooId,name当我在Foo对象上调用toString时。
编辑
我熟悉从顶级@ToString注释中排除或包含字段的替代方法。我试图避免这种情况。我只想@Data在类级别使用,并注释应排除的字段。
编辑2
仍在简化类上复制。龙目岛1.18.8版本。
为我工作。 lombok:1.18.8
import lombok.Data;
import lombok.ToString;
@Data
public class MyClass {
public static void main(String args[]) {
MyClass myClass = new MyClass();
System.out.println("ToString::" + myClass);
}
private String a = "ABC";
@ToString.Exclude
private String b = "DEF";
}
Run Code Online (Sandbox Code Playgroud)
输出: ToString::MyClass(a=ABC)
@ToString接受一个参数exclude,可用于从字符串中排除字段。
@ToString(exclude = {"bar"})
@Entity
@ToString(exclude = {"bar"})
public class Foo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long fooId;
private String name;
@ManyToOne
@JoinColumn(name = "barId")
@EqualsAndHashCode.Exclude
private Bar bar;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2016 次 |
| 最近记录: |