【发布时间】:2018-07-21 08:15:59
【问题描述】:
我有一个下游服务,我想将其 bean 映射到我的 bean。但是使用mapstruct似乎有问题。
来自下游服务的 Pojo(我无法更改其定义)
@ToString
@Getter
@Setter
@Accessors(fluent = true)
public class PojoA {
private String stringA;
private int integer;
}
我想把它转换成 PojoB
@Setter
@Getter
@ToString
public class PojoB {
private String stringB;
private int integer;
}
映射器接口
@Mapper
public interface PojoMapper {
PojoMapper INSTANCE = Mappers.getMapper(PojoMapper.class);
@Mapping(source = "stringA", target = "stringB")
PojoB pojoAToPojoB(PojoA pojoA);
}
这失败了,因为它无法找到 getter 作为 fluent 从 getter 中删除前缀,并且, 我知道 mapstruct 生成映射器接口的实现并使用 bean 规范(即获取和设置前缀)
有办法克服吗?
【问题讨论】:
-
您需要手动指定映射
-
@DarrenForsythe 请详细说明一下。手动,你的意思是,我必须编写一个方法来来回翻译对象吗?
-
实际上刚刚发现 Mapstruct 可以处理您的确切示例,mapstruct.org/documentation/stable/reference/html/…
-
医生说可以,但不能。我有同样的问题,我无法解决它。也需要帮助。