Dozer — поля сопоставления только в том случае, если объекты назначения и источника имеют одинаковые имена полей.

По какой-то причине 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-файле сопоставления.


person Stephane Grenier    schedule 05.07.2015    source источник


Ответы (2)


Кажется, Dozer не загружает ваш файл конфигурации и отображает классы в соответствии с конфигурацией по умолчанию (wildcard=true). Проверьте, загружен ли dozerBeanMapping.xml. См. Отладка инициализации.

person A.Panzer    schedule 12.09.2015

По умолчанию поля карты бульдозера по именам. Вот почему, когда вы и anotherField к SourceObject сопоставлению работает.

Вероятно, Dozer загружает ваш файл отображения. Dozer автоматически загружает файлы сопоставления из пути к классам. Для остальных файлов нужно указать их путь. Вероятно, ваши файлы сопоставления не находятся в пути к классам.

person MicD    schedule 21.09.2017