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

标签 java jpa orika

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

是否有一种不错的方法可以在 Orika 中实现此类行为,而无需指定两个自定义 ClassMap

最佳答案

可能的解决方案之一是使用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 的“自定义单个 ClassMap”部分.

关于java - 让映射器在特定条件下不映射字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33262462/

相关文章:

java - 为什么 Java 元编程支持不是更好?

java - 查询两个以上的实体

java - Orika 嵌套映射器

java - Orika 多态映射

java - 无法更新安卓应用

java - Reducer节点需要很长时间才能接收其记录

java - 如何在 Google Dataflow 中组合两组不同的标识符?

java - JPA:使用服务和多个存储库的正确方法

java - Orika:未在空值上调用 CustomConverter

java - 非常简单的Gradle Java项目,找不到依赖项