EqualsAndHashCode.Exclude не может быть разрешено для типа - PullRequest
0 голосов
/ 29 июня 2018

Я использую Project Lombok с Eclipse и могу скомпилировать следующий класс.

Теперь я бы хотел исключить одно поле из методов хеширования и равенства с помощью аннотации @EqualsAndHashCode.Exclude, такой как , показанной в документации Lombok .

К сожалению, это не компилируется. Почему?

@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=true или false

Окружающая среда:

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

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

TL; DR: вам нужен Lombok 1.16.22 или выше, но какой Lombok вы действительно используете? (см. ниже)


Я обнаружил, что проблема заключается в несоответствии версии Lombok, используемой плагином Lombok Eclipse (в актуальном состоянии), и зависимости maven (более старой).

Если хотите, Spring Boot "виноват", так как проект был настроен с start.spring.io , а зависимость spring-boot-starter-web устанавливает свойство версии lombok равным 1.16.20 в время написания.

В таком случае версия в эффективном pom выигрывает у версии плагина IDE, и, как мы можем прочитать из Документация Lombok :

До появления lombok 1.16.22 включение / исключение можно было выполнять с помощью параметров of и exclude аннотации @EqualsAndHashCode. Этот механизм включения в старом стиле все еще поддерживается, но будет устарел в будущем.

0 голосов
/ 03 июля 2018

Вы также обновляли зависимость в своем файле сборки?

...