カスタム コンバーターを使用した Dozer マッピングがあります。
<mapping>
<class-a>com.xyz.Customer</class-a>
<class-b>com.xyz.CustomerDAO</class-b>
<field custom-converter="com.xyz.DozerEmptyString2NullConverter">
<a>customerName</a>
<b>customerName</b>
</field>
</mapping>
そしてコンバーター:
public class DozerEmptyString2NullConverter extends DozerConverter<String, String> {
public DozerEmptyString2NullConverter() {
super(String.class, String.class);
}
public String convertFrom(String source, String destination) {
String ret = null;
if (source != null) {
if (!source.equals(""))
{
ret = StringFormatter.wildcard(source);
}
}
return ret;
}
public String convertTo(String source, String destination) {
return source;
}
}
一方向 (Customer -> CustomerDAO) でマッパーを呼び出すと、メソッド「convertTo」が呼び出されます。
Dozer は双方向のマッピングを処理できるため、マッパーを反対方向に呼び出すとすぐに、メソッド「convertFrom」が呼び出されることを期待しています。
ただし、メソッド convertTo は呼び出されません。
問題は、両方のタイプが文字列であることだと思いますが、どうすればこれを機能させることができますか?
回避策として、一方向マッピングを 2 つ作成しました。これは標準的な解決策ですか、それとも動作はバグですか?