Аннотации Ломбока не работают с наследованием

У меня есть что-то вроде родительского класса (File A.java).
Каждый класс расширяет этот класс, так как каждому классу нужен name.

Когда я использую в File X.java функцию @With, она работает для .withDescription("xxx"), которая является частью File B.java.
Но невозможно использовать функцию @With с .withName("xxx");
По крайней мере, IntelliJ не показывает .withName("xxx").
Но унаследованный .setName("xxx") работает как положено.

Любая идея, как заставить это работать, как ожидалось? Я видел этот ответ, чтобы использовать @SuperBuilder, но я хотел сделать это без @Builer/@SuperBuilder

Файл A.java

@Getter
@Setter
@With
@MappedSuperclass
public class A {
  public String name;
}

Файл B.java

@Getter
@Setter
@With
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class B extends A {
  public String description;
}

Файл X.java

public class X {
  public void x() {
    var b = new B().withDescription("xxx"); // it works
    b.withName("xxx"); // is NOT working.
    b.setName("xxx"); // only set is working, even it's only inherited.
}

person Joergi    schedule 15.11.2020    source источник


Ответы (1)


Вам нужно добавить @AllArgsConstructor к A

person Ramin PK    schedule 15.11.2020
comment
Я думал, что пробовал, но похоже, что нет. но в A у меня также есть: @Setter(AccessLevel.NONE) @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; с @AllArgsConstructor я также могу установить withId, чего я не хочу делать, поэтому у меня есть @Setter(AccessLevel.NONE). Есть идеи, как избежать этого Рамина? - person Joergi; 15.11.2020
comment
Мне ничего не приходит в голову, кроме Builder, который вы не хотите использовать. - person Ramin PK; 16.11.2020