私はそのような列挙型を持っています:
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;
}
}
文字列に変換する必要があります。その逆も同様です。現在、それはカスタムコンバーターによって行われます。しかし、私はドーザーマッピングを介してそれをやりたいです(可能であれば)。私がドーザー会議にマッピングを書かない場合、私は得ます
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()を試しました。何も機能しません。列挙型から文字列への変換も機能しません。空の文字列を取得します。何か案は?