Поле вложенного класса Dozer в плоское сопоставление Map.class с использованием Dozer API

Я пытаюсь сделать карту Dozer своими классами:

public class A {
  private B someB;
  private String someAText;
}

public class B {
  private String someBText;
}

к результирующему Map.class, подобному следующему:

"someAText" => "someATextValue"
"someBText" => "someBTextValue"

.

То есть я пытаюсь указать сопоставление поля вложенного класса с назначением плоского ключа Map. Я использую Dozer с помощью Java API, а не xml. Я не смог найти подходящую конфигурацию компоновщика для управления этим. Базовый код выглядит примерно так:

beanMappingBuilder = new BeanMappingBuilder() {
  @Override
  protected void configure() {
    mapping(B.class, Map.class, TypeMappingOptions.oneWay(), mapNull(true));
    mapping(A.class, Map.class, TypeMappingOptions.oneWay(), mapNull(true));
  }
 }

person maricn    schedule 27.05.2015    source источник


Ответы (1)


Я предлагаю вам попробовать следующую конфигурацию:

beanMappingBuilder = new BeanMappingBuilder() {

  @Override
  protected void configure() {
    // 'A > Map' mapping
    mapping(A.class, Map.class, TypeMappingOptions.oneWay(), TypeMappingOptions.mapNull(true))
      .fields("someAText", "someATextValue")
      .fields("someB.someBText", "someBTextValue");

    // 'B > Map' mapping
    mapping(B.class, Map.class, TypeMappingOptions.oneWay(), TypeMappingOptions.mapNull(true))
      .fields("someBText", "someBTextValue");
  }
}
person Denis Colliot    schedule 26.08.2015