【发布时间】:2020-03-27 21:26:42
【问题描述】:
尝试在我的业务模型中使用值对象,我遇到了以下代码的问题:
@Mapper
public abstract class TestMapstruct {
public ValueObjectA mapA(String value){
return new ValueObjectA(value);
}
public abstract BusinessObject map(DTO dto);
@Value
public static class ValueObjectA {
private String a;
}
@Value
public static class ValueObjectB {
private String b;
}
@Data
public static class BusinessObject {
private ValueObjectA a;
private ValueObjectB b;
}
@Data
public static class DTO {
private String a;
private String b;
}
}
缺少映射 (String -> ValueObjectB) 会导致以下编译错误消息:
无法将属性“java.lang.String b”映射到“test.ValueObjectB b”。考虑声明/实现一个映射方法:“test.ValueObjectB map(java.lang.String value)”。
我完全理解这一点,但我不想为我的每个 ValueObjects 声明一个方法(一个项目中可能有几十个)。
有没有通用的方式来声明(String -> ValueObject)映射方法?
【问题讨论】:
标签: java mapstruct value-objects