Ich habe eine Klasse, nennen wir es A mit einem Map-Feld, das in Klasse B konvertiert wird, die ich für Datenbankspeicherung/retrieval verwendet, in dem das Feld auf eine Zeichenfolge zugeordnet ist. Das Mapping funktioniert perfekt von A nach B. Wenn ich jedoch von B nach A gehe, erhalte ich eine IllegalArgument-Ausnahme, die besagt, dass ein String nicht in eine Map umgewandelt werden kann. Verwirrt mich, weil Dozer's documentation sagt, dass dies funktioniert, wo es heißt:Zuordnen einer Zeichenfolge zu einer Karte über Dozer
Datentyp Coversion wird automatisch von der Dozer-Mapping-Engine durchgeführt. Derzeit unterstützt Dozer die folgenden Arten von Konvertierungen: (diese sind alle bidirektional)
Und dann geht es weiter, um String zu Map als eines der möglichen Dinge aufzulisten.
Was fehlt mir hier, oder was muss ich speziell machen? Meine Dateien wie folgt aussehen:
public class ClassA {
Map<String, String> field;
public Map<String, String> getField() {
return field;
}
public void setField(
Map<String, String> field) {
this.field = field;
}
}
public class ClassB {
String field;
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
}
<mapping>
<class-a>com.fake.company.name.ClassA</class-a>
<class-b>com.fake.company.name.ClassB</class-b>
</mapping>
Sehr interessant. Vielleicht sind sie "Map to Map", weil ich so etwas in dieser Liste nicht sehe und das ist definitiv möglich. –
Ich habe ein Problem angesprochen - https://github.com/DozerMapper/dozer/issues/283. Natürlich ist das Mapping zumindest nicht automatisch. –
@ShireResident nicht sicher, dass ein Thema wert ist, wie Marti darauf hingewiesen hat, ist die Lösung, das Feld einfach explizit zu deklarieren. – Atocil