2015-01-07 9 views
1

Dozer (버전 2.2.0)에서 SuperCSV를 사용하여 데이터를 List에 성공적으로 매핑 할 수있었습니다. 그러나 이제 ListList 초로 매핑되기를 원합니다. 이 한 나는 내 필드 매핑을 위해Dozer가있는 SuperCSV - 목록 목록에 매핑하는 방법?

List<List<String>> myListOfLists; 

: 오브젝트에서 내가 매핑하기 위해 노력하고있어, 나는 이런 식으로 뭔가를 보이는 분야가

"myListOfLists를 [0] [0]", "myListOfLists [0] [1]", "myListOfLists [1] [0]"등

그러나, 다음과 같은 오류가 발생합니다

org.dozer.MappingException: No read or write method found for field (myListOfLists[0]) in class (class com.foo.MyClassBeingMappedTo)

내가 하나를 찾을 수 없습니다 중첩 된 컬렉션의 예는이 쇼처럼 보입니다. 가능할 수 있습니다. 내 List<List<String>> 필드에 데이터를 매핑 할 수있는 방법이 있습니까?

+0

이것이 Dozer의 한계라고 생각합니다. 중첩 된 목록을 처리 할 수 ​​없다고 생각합니다. 당신은 당신이'myListOfLists [0]. [0]'을 사용할 수 있다고 생각 하겠지만,'. [0]'을 모두 무시하는 것으로 보이고, List에 접근 할 때'ClassCastException'이 발생합니다.). –

답변

0

내 주변에 대한 래퍼 클래스를 만들어이 문제를 해결했습니다. List. 그런 다음

public static class InnerListWrapper 
{ 
    private List<String> innerList; 

    public List<String> getInnerList() 
    { 
     return innerList; 
    } 
    public void setInnerList(List<String> innerList) 
    { 
     this.innerList = innerList; 
    } 
} 

List은 다음과 같습니다 외부 :

List<InnerListWrapper> myListOfLists; 

그런 다음 필드 매핑 단순히 "myListOfLists [0] .innerList [0]", "myListOfLists이 같은 내부 클래스를 생성

가장 깨끗한 것은 아니지만 위의 설명과 같이 Dozer는 중첩 목록을 지원하지 않는 것 같습니다. [0] .innerList [1] ","myListOfLists [1] .innerList [0] 그래서 사이에 다른 클래스를 추가해야합니다.