Mapstruct-内部类的多个参数



我试图映射到一个内部类,但它不起作用。

我有以下Pojos:

public record Author(UUID id, String name) {}
public record Book(Author author) {}

这就是映射器:

@Mapper
public interface BookMapper {
@Mapping(target="author", source=".");
Book map(UUID id, String name);
Author map(UUID id, String name);
}

但我在编译时遇到了这个错误:

BookMapperImpl is not abstract and does not override abstract method map(UUID,String)

感谢您的帮助。

感谢

BookMapperImpl不是抽象的,并且不会覆盖抽象方法映射(UUID,String(

这是一个奇怪的错误,这意味着MapStruct由于其他原因生成了一些部分实现,但它没有报告添加错误。这很可能是MapStruct中的一个错误。

然而,使用source = "."不能处理多个源参数,即使没有这些参数,也无法将映射传递给Author映射。

我建议使用自定义方法进行映射,例如

@Mapper
public interface BookMapper {
@Mapping(target="author", source=".");
default Book map(UUID id, String name) {
Author author = map(id, name);
return author != null ? new Book(author) : null;
}
Author map(UUID id, String name);
}

最新更新