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;
}
}