0
public class Something{
private string id;
private SomethingElse somethingElse;
private OtherProperties...
}
public class SomethingElse{
private string id;
private OtherProperties...
}
public class SomethingDto{
private string id;
private string somethingElseId;
private OtherProperties...
}
當映射從東西SomethingDto我要做推土機深物業映射
<mapping>
<class-a>Something</class-a>
<class-b>SomethingDto</class-b>
<field>
<a>somethingElse.id</a>
<b>somethingElse</b>
</field>
</mapping>
我不知道怎麼做相反的我要的是「新SomethingElse」,然後設置ID這樣
public class Something{
private string id;
private SomethingElse somethingElse;
private OtherProperties...
public void setSomethingElseById(String somethingElseId){
somethingElse = new SomethingElse;
somethingElse.setId(somethingElseId);
}
}
<mapping>
<class-a>SomethingDto</class-a>
<class-b>Something</class-b>
<field>
<a>somethingElse</a>
<b set-method='setSomethingElseById(SomethingElse)' >somethingElse</b>
</field>
</mapping>
這的確看起來像一個壞的解決方案,所以我嘗試定製轉換
public class SomethingDtoToSomethingConverter extends DozerConverter<String, SomethingElse> {
public SomethingDtoToSomethingConverter() {
super(String.class, SomethingElse.class);
}
@Override
public SomethingElse convertTo(String source, SomethingElse destination) {
destination = new SomethingElse();
destination.setId(source);
return destination;
}
@Override
public String convertFrom(SomethingElse source, String destination) {
destination = source.getId();
return destination ;
}
}
這看起來像一個非常簡單的代碼荒謬的數量 我該如何實現一個更清潔的解決方案?
試過了,沒有出於某種原因...也許我失去了一些東西,做你有一個id域的構造函數或什麼?我只允許使用空的構造函數不幸 – Als
這很奇怪,它對我來說工作得很好。我的Java bean只有默認的構造函數,並且單元測試執行得很好 –
Ups,剛剛意識到我搞砸了(如同allways),它的工作原理就像你說的那樣 – Als