2010-10-25 1 views
0

Быстрый вопрос: я использую Dozer для создания сопоставлений между двумя разными классами. В моем целевом классе (A в этом примере) у меня есть поле, которое является экземпляром объекта Name. Этот объект имеет две строки (last- и firstNames). Эти строки строятся путем ввода списка строк и объединения их вместе с разделителем. В моем исходном классе (B) у меня есть два списка (last- и firstNames). Все списки содержат только строки.Бульдозер: Глубокое картирование не работает

Мое отображение бульдозер выглядит следующим образом:

<mapping> 
     <class-a>A</class-a> 
     <class-b>B</class-b> 
     <field> 
      <a is-accessible="true" >name.lastNames</a> 
      <b>lastNames</b> 
     </field> 
     <field> 
      <a is-accessible="true">name.firstNames</a> 
      <b>firstNames</b> 
     </field> 
    </mapping> 

Однако при использовании вышеуказанной конфигурации, я получаю следующее исключение:

org.dozer.MappingException: No such field found class A.name.lastNames 

Кто-нибудь знает, если это:

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

Для заполнения: на обоих объектах есть объекты-получатели и сеттеры, определенные в объекте Name, однако я не писал геттеры и сеттеры по самому классу A.

ответ

1

Невозможно объединить глубокое сопоставление с атрибутом is-accessible. Написание пользовательского картографа для класса делает трюк.