Leider hat die hier vorgeschlagene Lösung in meiner Umgebung nicht funktioniert. Aber um ehrlich zu sein, die Verwendung von Java8-Zeitobjekten als DTOs ist nach allem keine sehr gute Idee.
Ich würde empfehlen, stattdessen benutzerdefinierte DTOs zu erstellen und sich nicht auf instabile Bibliotheken zu verlassen, die nach dem nächsten JDK-Release brechen könnten. Dieser Ansatz entspricht auch den bewährten Praktiken der Anti-Korruptions-Schicht und Adaptermuster.
Hier ist ein Beispiel des DTO:
public class ReportDTO implements Serializable {
private YearMonthDTO yearMonth;
public YearMonthDTO getYearMonth() {
return yearMonth;
}
public void setYearMonth(final YearMonthDTO yearMonth) {
this.yearMonth = yearMonth;
}
public void fromYearMonth(final YearMonth yearMonth) {
this.yearMonth = new YearMonthDTO(yearMonth.getYear(),
yearMonth.getMonthValue());
}
}
public static class YearMonthDTO {
private int year;
private int monthValue;
public YearMonthDTO() {
}
public YearMonthDTO(int year, int monthValue) {
this.year = year;
this.monthValue = monthValue;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonthValue() {
return monthValue;
}
public void setMonthValue(int monthValue) {
this.monthValue = monthValue;
}
}
Es hängt natürlich von Ihrer Situation und dem Arbeitsaufwand ab, den Sie mit dieser Lösung haben. Wie jedes Muster ist diese Lösung nicht auf alle Situationen anwendbar.
In jedem Fall scheint die derzeit beste Antwort nicht mehr zu funktionieren. Ich habe keine anderen Lösungen ausprobiert, aber ich habe beschlossen, mich in meinem einfachen Fall nicht auf Bibliotheken zu verlassen.