2014-04-07 2 views
0

Мне нужно сделать что-то похожее на простое сопоставление, но я все еще не могу справиться с этим. Что мне нужно сделать, так это сопоставить firstName + lastName для первого класса, который будет указан на втором.Орика Картирование: Конкат двух элементов в один

Что-то вроде этого:

class Person { 
    String firstName; 
    String lastName; 
} 

class PrintablePerson { 
    String name; // name should be firstName+" "+(lastName) 
} 

Wich является лучшим способом для достижения этой цели?

UPDATE:

Я уже решил эту проблему путем внедрения свой собственный Mapper, делая это:

public class MyCustomMapper extends CustomMapper<Person, PrintablePerson> { 
    @Override 
    public void mapAtoB(Person person, PrintablePerson printablePerson, MappingContext context) { 
     printablePerson.setName(person.getFirstName() + " " + person.getLastName()); 
    } 
} 

Тогда я назвал картографа в методе подгоняют с помощью:

mapperFactory.classMap(Person.class, PrintablePerson.class) 
.byDefault() 
.customize(
    new MyCustomMapper() 
).register(); 

ответ

3

Посмотрите на Customizing individual ClassMaps

mapperFactory.classMap(Person.class, PrintablePerson.class) 
.byDefault() 
.customize(
    new CustomMapper<Person, PrintablePerson>() { 
     public void mapAtoB(Person a, PrintablePerson b, MappingContext context) { 
     // add your custom mapping code here 
     b.setName(a.getFirstName() + " " + a.getLastName()); 
     } 
    }) 
.register(); 
+0

Это не работает, настройка устарела, и вы создаете абстрактный класс (CustomMapper) –

+0

На самом деле существует два метода настройки, один из которых устарел и заменен другим. Да, конечно, CustomMapper - это абстрактный класс, но вы можете создать его с помощью внутренней реализации, это обычная практика Java. встроенная реализация методов означает, что Java создает экземпляр анонимного класса, который расширяет абстрактный класс (или реализует интерфейс). Этот анонимный класс является конкретным классом. –

+0

Все еще не работает, я не знаю, почему принимает устаревший метод, и среда IDE жалуется на создание абстрактного класса. Есть идеи? –

 Смежные вопросы

  • Нет связанных вопросов^_^