Mapstruct 忽略字段,警告未映射的目标属性

Mapstruct ignore field, warning unmapped target properties

提问人:JohnN 提问时间:9/4/2023 最后编辑:potameJohnN 更新时间:9/20/2023 访问量:163

问:

我在 Java 中使用 mapstruct,我需要摆脱警告:警告:未映射的目标属性:“t3”。我有以下结构:

class A {
    String t1;
    String t2;
}

class B {
    String t1;
    String t2;
    String t3;
}

我正在使用 mapstruct 从 B 类映射到 A 类。

B toB(A a);

我只想忽略一个字段(t3),但需要目标属性,所以我不能使用 .有什么解决办法吗?@Mapping@Mapping(source = "t3", ignore = true)

TRYING:我试图使用和使用,但我只想忽略特定的字段。@MappingunmappedTargetPolicy = ReportingPolicy.IGNORE

期望:我只想忽略一个字段 (t3),但需要 target 属性,所以我不能使用 .有什么解决办法吗?@Mapping@Mapping(source = "t3", ignore = true)

Java 映射 警告 mapstruct 忽略

评论

0赞 Maksim Eliseev 9/4/2023
I am mapping with mapstruct from B to A class- 不,您正在将 A 映射到 B
0赞 Luca Basso Ricci 9/4/2023
忽略 T3 是解决这个问题的方法

答:

3赞 Gabriela83 9/4/2023 #1

即使它属于映射的“源”而不是“目标”,也可以使用。@Mapping(target = "t3", ignore = true)

评论

0赞 JohnN 9/4/2023
我试过了,结果类型中出现了“未知属性”t3”
0赞 Gabriela83 9/4/2023
你有没有机会使用龙目岛?
0赞 Maksim Eliseev 9/4/2023
@JohnN请提供映射代码(将其放在您的问题中),因为此解决方案100%有效
0赞 Filip 9/6/2023
这是问题中提出的从 A 映射到 B 时的正确答案
0赞 atish.s 9/7/2023 #2

我制定了未映射的策略(针对源和目标)以抛出错误并忽略两个映射的字段。t3

它在我的测试中工作正常。

import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.ReportingPolicy;
import org.mapstruct.factory.Mappers;


@Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR, unmappedSourcePolicy = ReportingPolicy.ERROR)
public interface ABMapper {

    ABMapper mapper = Mappers.getMapper(ABMapper.class);

    @Mapping(source = "t1", target = "t1")
    @Mapping(source = "t2", target = "t2")
    @Mapping(target = "t3", ignore = true)
    B toB(A a);

    @Mapping(source = "t1", target = "t1")
    @Mapping(source = "t2", target = "t2")
    @BeanMapping(ignoreUnmappedSourceProperties = { "t3" })
    A toA(B b);
}

来源: https://github.com/mapstruct/mapstruct/issues/1718