【问题标题】:How to set lombok.equalsAndHashCode.callSuper = call in spring application.properties?如何在spring application.properties中设置lombok.equalsAndHashCode.callSuper = call?
【发布时间】:2019-02-12 15:31:50
【问题描述】:

我在 Hibernate 实体上使用 Lombok,并且具有继承性:

@MappedSuperclass
@Data
public class BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private Boolean enabled;
    public BaseEntity() {
        enabled = true; 
    }
}

@Entity
@Data
public class Event extends BaseEntity {
    private String name;
    private LocalDateTime start;
    private LocalDateTime end;
    private Boolean isTaxable;
}

Eclipse 对子 @Data 发出警告:

生成 equals/hashCode 实现但没有调用 超类,即使这个类没有扩展 java.lang.Object。 如果这是故意的,请添加“@EqualsAndHashCode(callSuper=false)” 适合你的类型。

这里提到Warning equals/hashCode on @Data annotation lombok with inheritance

我可以使用

lombok.equalsAndHashCode.callSuper = call

如何在 spring application.properties 文件中使用此属性?我应该在 application.properties 附近创建 lombok.config 文件并将其放在那里吗?

我尝试将其添加到 application.properties

lombok.equalsAndHashCode.callSuper = call

但是 Eclipse 说这个属性未知,并且子类 @Data 注释上的警告仍然存在。

【问题讨论】:

    标签: java spring lombok


    【解决方案1】:

    由于 lombok 是一个注解处理器,它在编译期间完成它的工作。因此,在构建项目时,您要在 lombok 中配置的所有内容都必须存在。

    您必须将所有 lombok 配置选项放入名为 lombok.config 的文件中。此文件通常放置在您的项目根文件夹中。详情请参阅lombok documentation。 (请注意,此文件不会包含在构建的工件中,例如 JAR 文件。)

    您不能在运行时配置 lombok(例如,使用 application.properties)。

    【讨论】:

    • 虽然 Eclipse 在编译之前会看到 getter 和 setter、@Slf4j 注释等。我认为 Eclipse Lombok 插件也应该知道 lombok.config 文件中设置的属性。还是不是?
    • Eclipse 应该能识别它。您可能必须执行清理/重新编译才能使设置生效。确保在 Eclipse 中安装了当前版本 1.18.2 的 lombok 插件(请参阅“关于 Eclipse”对话框)。如果这没有帮助并且警告在 Eclipse 中仍然存在,但使用 maven 或 gradle 编译时肯定没有警告,请在github.com/rzwitserloot/lombok/issues 提交错误,并说明如何重现。
    • 当我使用 Lombok Gradle 插件时,lombok.config 文件被删除我的配置的插件覆盖。
    猜你喜欢
    • 2013-09-08
    • 1970-01-01
    • 2022-09-27
    • 2020-12-28
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多