Orika: сопоставление постоянного значения по умолчанию с полем

Есть ли способ с помощью Orika установить значение поля в буквальное или постоянное значение?

Я имею в виду что-то вроде:

public class ObjectMapper extends ConfigurableMapper {

        protected void configure(MapperFactory factory) {
             factory.classMap(SourceClass.class, DestinationClass.class)
             .field("myField", "CONSTANT_VALUE")
             .byDefault()
             .register();
        }
}

Я не могу найти что-то подобное в документации...


person davioooh    schedule 05.10.2016    source источник


Ответы (2)


Я нашел простое решение

public class ObjectMapper extends ConfigurableMapper {

    protected void configure(MapperFactory factory) {
         factory.classMap(SourceClass.class, DestinationClass.class)
         .field("", "myField:{|setMyField('MY CONSTANT')}")
         .byDefault()
         .register();
    }
}

источник может быть пустым, вам просто нужно заполнить пункт назначения именем свойства и методом установки.

person Diego U    schedule 22.06.2018

Согласно этому разделу документов Orika, единственный способ установить буквальное значение определяется путем настройки сопоставления. Например:

public class ObjectMapper extends ConfigurableMapper {

        protected void configure(MapperFactory factory) {
             factory.classMap(SourceClass.class, DestinationClass.class)
             .byDefault()
             .customize(new CustomMapper<SourceClass, DestinationClass>() {
                @Override
                public void mapAtoB(SourceClass a, DestinationClass b, MappingContext context) {
                    b.setMyField("CONSTANT_VALUE");
                }

                // ...
            })
            .register();
        }
}
person davioooh    schedule 05.10.2016