我使用mapstruct在两个Calses之间进行映射:CandidateDTO和CandidateDTO。
@Mapper
public interface CandidateMapper {
CandidateDTO toCandidateDTO(Optional<CandidateEntity> candidateEntity);
}
public class CandidateMapperImpl implements CandidateMapper {
@Override
public CandidateDTO toCandidateDTO(Optional<CandidateEntity> candidateEntity) {
if ( candidateEntity == null ) {
return null;
}
CandidateDTO candidateDTO = new CandidateDTO();
return candidateDTO;
}
}
我在这里的问题是,当映射时,所有DTO字段都为空,因为没有生成映射字段。
请帮忙。
MapStruct还不支持这一点。请查看问题跟踪器中的问题mapstruct/mapstruct#674。
但是,您可以使用默认的自定义方法。
@Mapper
public interface CandidateMapper {
default CandidateDTO toCandidateDTO(Optional<CandidateEntity> candidateEntity) {
return toCandidateDTO(candidateEntity.orElse(null);
}
CandidateDTO toCandidateDTO(CandidateEntity candidateEntity);
}
“”“@Data@Builder(toBuilder=true)@allargsconstuctor@noargsconstuctor public class ServiceAddress{private String addLine1;private String addLine2;private String city;private String state;private String
假设我有这些实体: null
我试图解析下面的processingdate,以便最终得到格式为2020-11-10T10:43:07 00:00的日期。我如何修改以下内容以产生此结果?
实体或字段可以映射到/字段,例如,可以映射到: 然而,生成的实现类不包括类的任何导入语句,尽管它存在于抽象类中,因此代码不编译: 为什么会这样?我做错了吗?怎么解决这个? Edit2:在MapStruct的Github上发布了这个问题:https://Github.com/mapstruct/mapstruct/issues/844
我想映射2个模型,其中每个模型都有几乎相同的枚举。让我展示: 第一个模型有枚举: 第二个模型具有枚举: 我有这样的自定义映射方法: 然后我用: 但是你可以得到: 我还创建了枚举映射器,如: 但我不需要单独设置,只希望枚举字段映射到内部映射中。简单地说,当我做枚举时,也应该映射。 谢谢 p、 对不起我的英语,希望我的问题有意义:)
默认情况下,MapStruct映射源和目标的所有属性,如果它们具有相同的名称。中的元素可用于省略任何字段映射。但那不是我想要的。我想控制映射策略。我想指定如下内容: 现在,这个映射仅仅意味着将id和名称从源映射到目的地。除非在mappings注释中指定,否则不应映射其他字段。