Lombok用@ ToString.Exclude排除字段不起作用

The*_*ger 4 java lombok

我正在使用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它,但似乎没有表现。我使用不正确吗?我只想打印出来fooIdname当我在Foo对象上调用toString时。

编辑

我熟悉从顶级@ToString注释中排除或包含字段的替代方法。我试图避免这种情况。我只想@Data在类级别使用,并注释应排除的字段。

编辑2

仍在简化类上复制。龙目岛1.18.8版本。

在此处输入图片说明

Sub*_*Sao 7

为我工作。 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)


Sum*_*tra 7

@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)