我有這樣的枚舉:推土機字符串枚舉映射
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(),單向映射。什麼都沒有枚舉到字符串轉換不起作用,我得到空字符串。 任何想法?
我已將自定義轉換器添加到推土機主控。所以沒有人從5.4不會面臨這個問題:) – madhead
@all任何人都可以看看這個[問題](http://stackoverflow.com/questions/27864640/dozer-string-to-date-field-level-mapping-for -al-list) – 09Q71AO534