【发布时间】:2020-03-14 16:56:20
【问题描述】:
我有 A 类(域类),B 类(mongo db 存储库层类)扩展了 A,它们都有 Lombok @Builder。我需要在它们之间进行转换,当我为此使用 Mapstruct 时,实现转换类在生成 B 类型的对象时使用来自 A 的 Builder。这会由于“不兼容的类型”而导致构建失败。如何解决这个问题?
@Builder
class A {
}
@Document
@Builder
class B extends A{
}
@Mapper
public interface ClassMapper {
B mapToDocument(A domainObject);
}
此代码生成以下 Mapstruct 文件:
public class ClassMapperImpl implements ClassMapper{
@Override
public B mapToDocument(A domainObject){
if(domainObject == null){
return null;
}
Builder builder = A.builder();
//builder methods
return builder.build(); //incompatible types due to builder generating A objects, not B
}
}
【问题讨论】:
标签: java mongodb lombok mapstruct