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

时间:2019-05-22 19:01:57

标签: 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; 
}

这是我第一次尝试使用@ToString.Exclude,但似乎没有行为。我使用不正确吗?当我在Foo对象上调用toString时,我只想打印出fooIdname

修改

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

编辑2

仍然在简化的类上进行复制。龙目岛1.18.8版。

enter image description here

5 个答案:

答案 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)

在科特林

您可以避免使用Lombok库,并定义一个自定义注释@ExcludeToString以排除冗余参数或您需要的参数。

GL

答案 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; 
}