提问人:JohnN 提问时间:9/4/2023 最后编辑:potameJohnN 更新时间:9/20/2023 访问量:163
Mapstruct 忽略字段,警告未映射的目标属性
Mapstruct ignore field, warning unmapped target properties
问:
我在 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:我试图使用和使用,但我只想忽略特定的字段。@Mapping
unmappedTargetPolicy = ReportingPolicy.IGNORE
期望:我只想忽略一个字段 (t3),但需要 target 属性,所以我不能使用 .有什么解决办法吗?@Mapping
@Mapping(source = "t3", ignore = true)
答:
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);
}
评论
I am mapping with mapstruct from B to A class
- 不,您正在将 A 映射到 B