EqualsAndHashCode.Exclude无法解析为类型

时间:2018-06-29 15:46:44

标签: java equals lombok

我在Eclipse中使用Project Lombok,并且可以编译以下类。

现在,我想通过使用像shown in the Lombok's documentation这样的注释@EqualsAndHashCode.Exclude从哈希和equals方法中排除一个字段。

不幸的是,这无法编译。为什么?

@Data
@EqualsAndHashCode(callSuper = true)
@MappedSuperclass
public class Foo extends Bar implements Serializable {

  private static final long serialVersionUID = 36364364363634634;

  @Id
  @GenericGenerator(name = "PKGenerator", strategy = "com.project.utils.PrimaryKeyGenerator")
  @GeneratedValue(generator = "PKGenerator")
  @Column(name = "guid")
  @EqualsAndHashCode.Exclude
  private String id;

  @NotNull
  private String code;

  //...other fields omitted
}

我得到的编译错误是:

EqualsAndHashCode.Exclude cannot be resolved to a type

忽略注释应用于哪个字段以及使用callSuper=truefalse

环境是:

Version: Oxygen.3a Release (4.7.3a)
..
Lombok v1.18.0 "Envious Ferret" is installed.

2 个答案:

答案 0 :(得分:1)

TL; DR:,您需要Lombok 1.16.22或更高版本,但是您真正使用的是哪个Lombok? (见下文)


我发现问题在于Lombok Eclipse插件使用的Lombok版本(最新)和Maven依赖项之一(旧)不匹配。

如果您愿意的话,由于项目是用start.spring.io设置的,而依赖项spring-boot-starter-web在编写本文时将lombok版本属性设置为1.16.20,因此弹簧启动将是“罪魁祸首”。

在这种情况下,有效pom中的版本会与IDE插件的版本相抵触,正如我们从The Lombok documentation中可以看到的那样:

  

在lombok 1.16.22之前,可以使用of批注的exclude@EqualsAndHashCode参数来进行包含/排除。   仍支持此旧式包含机制,但将   将来不推荐使用。

答案 1 :(得分:0)

您还更新了构建文件中的依赖项吗?