문제
나는 얻기 위해 고군분투하고있다 도저 내가 느끼는 무언가에 대해 내 의지에 구부리는 것은 아주 간단해야합니다. 나는 사이에 매핑하려는 두 가지 유사한 모델을 가지고 있지만, 하나는 다른 것보다 '더 깊은'계층이 있으며, 이는 컬렉션을 다룰 때 문제를 일으킨다. 다음 수업을 고려하십시오.
소스 클래스 :
class Foo {
String id;
NameGroup nameGroup;
// Setters/Getters
}
class NameGroup {
private List<Name> names;
// Setters/Getters
}
class Name {
private String nameValue;
// Setters/Getters
}
목적지 수업 :
class Bar {
private String barId;
private BarNames barNames;
// Setters/Getters
}
class BarNames {
private List<String> names;
// Setters/Getters
}
이제 다음 편도 매핑을 원합니다.
Foo.id -> Bar.barId // Simple enough
그러나 나는 다음과 같이 필요하다 :
Foo.nameGroup.names.nameValue -> Bar.barNames.names
그래서 각각 Name
인스턴스 Foo.nameGroup.names
a String
에 추가됩니다 BarNames.names
목록. 이게 가능해?
해결책
"이름"클래스에 문자열 생성자가 포함 된 한 도저로 쉽게 수행 할 수 있습니다.
도저 문서의 인용문 (http://dozer.sourceforge.net/documentation/simpleproperty.html):
데이터 유형 커버션은 도저 매핑 엔진에 의해 자동으로 수행됩니다. 현재 Dozer는 다음 유형의 전환을 지원합니다. (이들은 모두 2 방향입니다)
...
복잡한 유형에 문자열 유형이 문자열 생성기가 포함 된 경우
...
위와 같이 수업에서 이것을 테스트했으며 (같은 문제에 갇혔습니다) 완벽하게 작동합니다. 다음은 내가 사용한 매핑입니다.
<mapping>
<class-a>com.test.bar.Bar</class-a>
<class-b>com.test.foo.Foo</class-b>
<field>
<a>barId</a>
<b>id</b>
</field>
<field>
<a>barNames.names</a>
<b>nameGroup.names</b>
<a-deep-index-hint>java.lang.String</a-deep-index-hint>
<b-deep-index-hint>com.test.foo.Name</b-deep-index-hint>
</field>
</mapping>
제휴하지 않습니다 StackOverflow