@Data
public class FilesDTO {
private int issue;
private String uniqueStr;
private StorageDomain xml;
private StorageDomain pdf;
private StorageDomain stop;
}
@Data
public class BackHalfDomain {
private int articleId;
private String uniqueStrr;
private long xmlContentId;
private long pdfContentId;
private long stopId;
private int issueNumber;
}
使用存储库类,我必须从BackHalfDomain
中的ID获取StorageDomain
对象。因此,我必须将StorageDomain
对象Map到相应的字段。比如StorgeDomain sd = repo.findById(id).get();
,并在FilesDTO
的xml字段中设置这个sd
对象,等等。这是我的绘图仪
@Mapper(componentModel = "spring")
public interface FilesDTOMapper {
public static final FilesDTOMapper fileDTOMapper = Mappers.getMapper(FilesDTOMapper.class);
@Mapping(target = "issue", source = "domain.issueNumber")
@Mapping(target = "DOI", source = "domain.doi")
public FilesDTO map(BackHalfDomain domain);
}
我用过uses
,但不成功。我用过@Mapping(target="xyz", expression="java(repo.findById(id))")"
,但我得到的是NullPointerException
Spring注入不工作。有人能解决这个问题吗?我刚开始用mapstruct
3条答案
按热度按时间lokaqttq1#
从mapstruct 1.2开始,您可以使用@AfterMapping和@Context的组合。
在1.1中,您需要将Map器转换为抽象类
ar5n3qh52#
我也遇到了同样的问题。解决方案是使用this answer中建议的Decorator。按照您的代码,解决方案将类似于以下内容。
首先,我们必须在Mapper中指定Decorator:
然后,实现Decorator:
whhtz7ly3#
您需要像bean一样将Map器注入到服务中。