I have a class AusgangsrechnungGeneral which has a property "abrechnungsmonat". It is set from JSON via Jackson which has the same property, but defined as "abrechnungsMonat" - which works fine.
Now I need to deserialize the property from
"abrechnungsMonat" -> "abrechnungsmonat"
but serialize it as
"abrechnungsmonat"
Therefore I implemented follwong code:
@JsonFormat(pattern="yyyy-MM")
@JsonDeserialize(using = YearMonthDeserializer.class)
@JsonSetter("abrechnungsMonat")
private YearMonth abrechnungsmonat;
@JsonGetter("abrechnungsmonat")
public YearMonth getAbrechnungsmonat() {
    return this.abrechnungsmonat;
}
For other properties this method works fine, but here I got the following Error:
java.lang.IllegalStateException: Conflicting/ambiguous property name definitions (implicit name 'abrechnungsmonat'): found multiple explicit names: [abrechnungsmonat, abrechnungsMonat], but also implicit accessor: [field com.itf.ghost.propartsyncservice.api.rechnung.propartmodel.AusgangsrechnungGeneral#abrechnungsmonat][visible=true,ignore=false,explicitName=false]
I am using Lombok, but as far as I know Lombok will not generate additional getters if they are already defined. This is the class:
@NoArgsConstructor
@AllArgsConstructor
@Data
@ToString(callSuper = true)
@SuperBuilder
@JsonIgnoreProperties(ignoreUnknown = true)
public class AusgangsrechnungGeneral extends Rechnung {
    @JsonSetter("leistungsZeitraum")
    private String leistungszeitraum;
    @JsonGetter("leistungszeitraum")
    public String getLeistugnszeitraum() {
        return this.leistungszeitraum;
    }
    private String filePath;
    private Boolean isProberechnung;
    @JsonFormat(pattern="yyyy-MM-dd")
    @JsonDeserialize(using = LocalDateDeserializer.class)
    private LocalDate bezahltAm;
    @JsonFormat(pattern="yyyy-MM-dd")
    @JsonDeserialize(using = LocalDateDeserializer.class)
    private LocalDate zahlungErwartetAm;
    @JsonFormat(pattern="yyyy-MM")
    @JsonDeserialize(using = YearMonthDeserializer.class)
    @JsonSetter("abrechnungsMonat")
    private YearMonth abrechnungsmonat;
    @JsonGetter("abrechnungsmonat")
    public YearMonth getAbrechnungsmonat() {
        return this.abrechnungsmonat;
    }
    @JsonSetter("kundenId")
    private Long kunde;
    @JsonGetter("kunde")
    public Long getKunde() {
        return this.kunde;
    }
    @JsonSetter("abls")
    private List<AbrechenbareLeistung> abrechenbareLeistungen;
    @JsonGetter("abrechenbareLeistungen")
    public List<AbrechenbareLeistung> getAbrechenbareLeistungen() {
        return this.abrechenbareLeistungen;
    }
}
 
                        
Solved it with: