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