让映射器在特定条件下不映射字段

时间:2015-10-21 14:46:58

标签: java jpa orika

我有一个非常特殊的用例,我手中有一个类a的对象A和一个类b的对象B,这样{{1} 1}}我打算使用Orika将a.b.equals(b)映射到类a。 棘手的是,我想阻止C被传递,而是自己插入(a.b实际上是由JPA在映射期间提取的,我不想发生这种情况。另一方面,我希望在所有其他用例中映射a.b

有没有一种不错的方法在Orika中实现这种行为而不指定两个自定义a.b

2 个答案:

答案 0 :(得分: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();

请参阅User Guide的“自定义单个类别广告”部分。

答案 1 :(得分:-1)

您可以使用ClassMapBuilder.exclude(String propertyName)。