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 я должен сделатьбульдозер Deep Property Mapping
<mapping>
<class-a>Something</class-a>
<class-b>SomethingDto</class-b>
<field>
<a>somethingElse.id</a>
<b>somethingElse</b>
</field>
</mapping>
Я не уверен, как это сделать наоборот, что я хочу, это «новый SomethingElse», а затем установить идентификатор как этот
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-бобы просто имели конструкторы по умолчанию, и тестовый блок выполнялся отлично –
Упс, только что понял, что я завинтил (как всегда), он работает так, как вы сказали – Als