По какой-то причине Dozer НЕ позволяет мне отображать поля с разными именами, это только сопоставление полей на основе исходного объекта.
В моем файле dozerBeanMapping.xml
у меня есть:
<mapping type="one-way">
<class-a>data.SourceObject</class-a>
<class-b>data.DestinationObject</class-b>
<field>
<a>someField</a>
<b>anotherField</b>
</field>
</mapping>
И для объектов, которые у меня есть:
package data;
public class SourceObject
{
private String someField = "test";
public void setSomeField(String someField) { this. someField = someField; }
public String getSomeField() { return someField; }
}
package data;
public class DestinationObject
{
private String anotherField;
public void setAnotherField(String anotherField) { this.anotherField = anotherField; }
public Date getAnotherField() { return anotherField; }
}
Теперь, если я изменю SourceObject
, включив в него поле с именем anotherField
, все будет работать, как и ожидалось. Другими словами, сопоставление будет работать только в том случае, если поля имеют одинаковые имена как в DestinationObject
, так и в SourceObject
. Насколько я понимаю, им не нужно было совпадать, и это была единственная причина, по которой вы определили поля в XML-файле сопоставления.