JsonIgnore аннотация не работает с Lombok - PullRequest
0 голосов
/ 09 апреля 2020

У меня действительно странная проблема с Ломбоком и Джексоном. После фрагмента кода, над которым я работаю.

@Getter
@Setter
@NoArgsConstructor
@XmlRootElement
public class Order{

    //@JsonIgnore
    @Getter(onMethod = @__(@JsonIgnore))
    private boolean userPresent;
}

Итак, что я хочу, этот dto должен сериализоваться как Json, тогда этот атрибут userPresent не должен приходить как атрибут ответа. Я думаю, что @JsonIgnore будет работать на меня. Но я думаю, что это как проблема с Lombok согласно статье { ссылка }. Затем я изменил подход к использованию OnMethod.

Теперь, при компиляции затмения прекрасно, но когда я пытаюсь скомпилировать с использованием mvn, это дает мне следующую ошибку.

enter image description here

Может кто-нибудь помочь мне исправить, когда он не работает с Maven.

1 Ответ

0 голосов
/ 09 апреля 2020

Стиль @__ предназначен для javac7. Для javac8 + вы должны использовать этот вариант:

@Getter(onMethod_=@JsonIgnore)

Однако достаточно иметь аннотацию @JsonIgnore либо для поля, для метода получения или для метода установки. Если оно присутствует хотя бы в одном из них, все «виртуальное свойство» полностью игнорируется во время (де) сериализации. Так что если это то, что вы хотите, вам не нужно это onMethod_.

Если вы хотите, чтобы это игнорировалось только во время сериализации, но не при десериализации, вы должны добавить @JsonProperty на сеттер:

@JsonIgnore
@Setter(onMethod_=@JsonProperty)
private boolean userPresent;
...