2014-11-08 1 views
0

Я новичок в Dozer и есть эти три классабульдозер Отображение глубокого отображения свойств

class PersonEntity { 
    Set<AddressEntity> addresses; 
} 

class Person { 
    AddressList addresses; 
} 

class AddressList { 
    List<Address> address; 
} 

Есть ли способ, чтобы получить бульдозерный отображение, написанную для этого?

Вот то, что я до сих пор

<mapping> 
    <class-a>domain.entity.AddressEntity</class-a> 
    <class-b bean-factory="org.dozer.factory.JAXBBeanFactory"> 
     com.rackspace.customer.Address 
    </class-b> 

    <field> 
     <a get-method="isPrimary">isPrimary</a> 
     <b set-method="setPrimary">primary</b> 
    </field> 
</mapping> 

<mapping> 
    <class-a>domain.entity.PersonEntity</class-a> 
    <class-b bean-factory="org.dozer.factory.JAXBBeanFactory">com.rackspace.customer.Contact</class-b> 

    <field> 
     <a>userId</a> 
     <b>username</b> 
    </field> 

    <field custom-converter="domain.converter.PersonNumberAdapter"> 
     <a>personNumber</a> 
     <b>contactNumber</b> 
    </field> 

    <field> 
     <a>addresses</a> 
     <b>addresses.address</b> 
     <a-hint>domain.entity.AddressEntity</a-hint> 
     <b-hint>com.rackspace.customer.Address</b-hint> 
    </field> 
</mapping> 

Как вы говорите, второй картографа для повторного использования существующего картографа для преобразования AddressEntity в адрес и наоборот? Это не работает, может кто-нибудь мне помочь?

ответ

0
<b is-accessible="true">addresses.address</b> 

Ok После часа отладки я обнаружил, что он пытается получить доступ к моим методам сеттера, чтобы установить значение, так как мои объекты JAXB не имеют сеттеров на них не удались.

Как только я добавил доступный для истины, он работал как шарм.

С бульдозерным FAQ

Будут ли методы получения и установки будут вызываться, когда поля отображаются?

Да. Вы можете обойти это поведение по умолчанию, явно указав is-доступно = "true" для любого из ваших сопоставлений. Если задано is-access, поле (включая частные поля) обращается напрямую, а методы getter/setter исключаются. Не рекомендуется устанавливать is-available = "true", если вы не имеете дело с неортодоксальным объектом данных, который не содержит методов getter или setter.