我正在使用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版。
答案 0 :(得分:4)
为我工作。 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";
}
输出:ToString::MyClass(a=ABC)
答案 1 :(得分:1)
您将必须更新安装在Eclipse中的lombok(下载新的lombok.jar,运行java -jar lombok.jar
,然后重新启动Eclipse)。至少那为我解决了。
答案 2 :(得分:1)
<div id="color-btn-wrapper">
<button data-choosen-color="000">Black</button>
<button data-choosen-color="f00">Red</button>
<button data-choosen-color="f60">Orange</button>
</ul>
@排除对我有用。 @Exclude只是@ ToString.Exclude而已。 @Exclude注释在@ToString注释内定义。
data-choosen-color
答案 3 :(得分:0)
答案 4 :(得分:0)
@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;
}