【发布时间】:2017-05-28 00:49:35
【问题描述】:
我有一些这样的 POJO:
@Data
public class A {
List<B> bList;
}
@Data
public class B {
int id;
int x;
}
@Data
public class C {
List<D> dList;
}
@Data
public class D {
int x;
}
现在我想使用 MapStruct 将 C 类映射到 A 类,这样 A 类中 bList 中的 id 值会自动递增。我正在使用 Mapstruct 1.1.0.Final。
为了将List<D> 映射到List<B>,我可以为class B 和class D 定义一个映射器,POJO 将被自动映射,但找不到一种方法可以将 POJO 与自动增量一起映射在一个领域。
我的 POJO 很大。 Map Struct 中有没有一种方法可以自动增加列表中的变量?
【问题讨论】:
-
您能否提供更多信息。你想什么时候做一个自动增量?在
c和A之间的映射之后还是在B到D之间的映射之后? -
感谢您的回复。理想情况下,应该是在将 D 映射到 B 时。我为此找到了两种解决方案:在抽象类中使用全局线程局部变量并编写像
java("getAndIncrement(counter)")这样的表达式,其中getAndIncrement是一种获取和增加线程局部的方法变量(虽然不是一个好的解决方案,但由于我有巨大的 POJO,所以手动映射将是一项耗时的任务)。第二种解决方案:使用@AfterMapping注释。 C 映射到 A 后,手动自动增加 B 列表中的 id 值。