У меня есть класс, назовем его A с полем Map, которое преобразуется в класс B, который я использую для хранения/извлечения базы данных, в котором это поле сопоставляется с String. Картирование работает при идеальном переходе от A к B. Однако при переходе от B к A я получаю исключение IllegalArgument, в котором говорится, что он не может скрывать строку в карте. Меня смущает, потому что Dozer's documentation говорит, что это работает там, где сказано:Сопоставление строки с картой с помощью Dozer
Кодирование типа данных выполняется автоматически с помощью механизма отображения Dozer. В настоящее время Dozer поддерживает следующие типы конверсий: (все они двунаправленные)
И затем он переходит к списку String to Map как к одной из возможных вещей.
Что мне здесь не хватает, или что мне нужно делать специально? Мои файлы выглядеть следующим образом:
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>
Очень интересно. Может быть, они означают «Карта для карты» там, потому что я не вижу такой вещи в этом списке, и это определенно возможно. –
Я поднял вопрос - https://github.com/DozerMapper/dozer/issues/283. Очевидно, что отображение, по крайней мере, не является автоматическим. –
@ShireResident не уверен, что это достойно вопроса, как указал Марти, решение состоит в том, чтобы просто явно объявить поле. – Atocil