2015-10-21 2 views
1

у меня есть очень конкретный случай, когда использование у меня в руках объекта, a класса A и объекты b класса B, так что a.b.equals(b) и я намерена картой a к класс C используя Orika. Сложный бит, я хотел бы предотвратить передачу a.b и, скорее, вставить его сам (a.b на самом деле выбран JPA во время отображения, которое я бы не хотел). С другой стороны, я бы хотел, чтобы a.b отображался во всех других случаях использования.Есть картостроитель не отображает поле в конкретных условиях

Есть ли достойный способ реализовать подобное поведение в Орика без указания двух пользовательских ClassMap?

ответ

-1

Вы можете использовать ClassMapBuilder.exclude (String propertyName).

+0

Как уже упоминалось, я хотел бы иметь только один класс ClassMap – miau

1

Одним из возможных решений является использование CustomMapper:

mapperFactory.classMap(A.class, C.class) 
    .byDefault() // or your explicit mappings 
    .exclude("b") // exclude the property from default mapping 
    .customize(
     new CustomMapper<A, C> { 
      public void mapAtoB(A a, C c, MappingContext context) { 
      // implement your own logic for mapping the b property 
      } 
     } 
    .register(); 

Смотрите раздел «Настройка отдельных ClassMaps» из User Guide.