문제

나는 얻기 위해 고군분투하고있다 도저 내가 느끼는 무언가에 대해 내 의지에 구부리는 것은 아주 간단해야합니다. 나는 사이에 매핑하려는 두 가지 유사한 모델을 가지고 있지만, 하나는 다른 것보다 '더 깊은'계층이 있으며, 이는 컬렉션을 다룰 때 문제를 일으킨다. 다음 수업을 고려하십시오.

소스 클래스 :

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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top