推土机字符串到枚举映射
我有这样的枚举:
public enum PartnershipIndicator {
VENDOR("VENDOR"), COPARTNER("COPARTNER"), BUYER("BUYER");
String code;
private PartnershipIndicator(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public static PartnershipIndicator valueOfCode(String code) {
for (PartnershipIndicator status : values()) {
if (status.getCode().equals(code)) {
return status;
}
}
throw new IllegalArgumentException(
"Partnership status cannot be resolved for code " + code);
}
@Override
public String toString() {
return code;
}
}
我需要将其转换为字符串,反之亦然。现在,它是由自定义转换器完成的。但我想通过推土机映射(如果可能的话)来做到这一点。如果我不写任何映射到推土机 confing,我得到
org.dozer.MappingException: java.lang.NoSuchMethodException: by.dev.madhead.demo.test_java.model.PartnershipIndicator.<init>()
例外。我无法将默认的公共构造函数添加到枚举中,因为这是不可能的。所以,我用内部代码和 valueOfCode() / toString() 写了一个技巧。它不起作用。然后,我在推土机配置中映射了它:
<mapping>
<class-a>java.lang.String</class-a>
<class-b create-method="valueOfCode">by.dev.madhead.demo.test_java.model.PartnershipIndicator</class-b>
</mapping>
它不起作用。我尝试了 valueOfCode(),单向映射。没有任何效果。枚举到字符串的转换也不起作用,我得到空字符串。有什么想法吗?