2012-08-29 3 views
0

Dozer를 사용하여 내 개체를 변환하고 있습니다. 하지만 간단한 목록을 매핑하는 데 문제가있어 ... Object List으로 Hibernate에서 ResultSet을 검색하고이를 내 복합 유형 개체에 매핑하려고합니다.Dozer를 사용하여 간단한 ArrayList를 VO에 매핑하는 방법

그래서, 내 소스는 같은 수 있습니다 :

List <Object> list = new ArrayList<Object>(); 
list.add("Name"); 
list.add("Address"); 

그리고 내 값 개체는 다음과 같습니다 I

public class MyClass 
{ 
    public String name; 
    public String address; 
} 
난 그냥 list[0] ==> MyClass.namelist[1] ==> MyClass.address 속성을 매핑 할

하지만, 방법을 찾지 못했습니다 ...

당신의 도움에 감사드립니다!

<mapping> 
    <class-a>MyClass</class-a> 
    <class-b>java.util.List</class-b>  
    <field>   
     <a is-accessible="true">name</a> 
     <b>this[0]</b> 
    </field>   
</mapping> 

그것은 단지, nameList의 전체 문자열 표현을 매핑 할 것이다 그래서 당신의 name 속성은 끝낼 것이다 : 어떤 이유로 도저 없음 지원이 (이상적인 상황) 않습니다를 들어

답변

0

[이름, 주소]. 로에

<mapping> 
    <class-a>MyClass</class-a> 
    <class-b>MyHolder</class-b>  
    <field>   
     <a is-accessible="true">name</a> 
     <b>holded[0]</b> 
    </field> 
    <field>   
     <a is-accessible="true">address</a> 
     <b>holded[1]</b> 
    </field>  
</mapping> 

MyHolder 클래스는 단지 holded 필드에 List 인스턴스를 포함하고 액세스를 제공합니다 :

당신의 최선의 선택은 홀더 클래스에 List을 넣고 같이 매핑하는 것 getter 메소드.

MyClass 속성이 public이고 접근자가 없기 때문에 필드 매핑 is-accessible="true"이 필요합니다. 이러한 속성을 private으로 만들고 접근 자 메서드를 만드는 것이 좋습니다.

+0

좋아, 나는 또한 첫 번째 솔루션을 사용하려고했지만 성공하지 못했습니다. (당신이 말했듯이, 속성은 [이름, 주소] 값으로 채워졌습니다. 마지막 솔루션에 대해 나는 섹시하지 않다고 생각합니다. 쓸데없이 객체를 래핑하는 것을 싫어하지만, 나는 최선의 선택이다! 물론,이 예제에서, 속성 이름과 주소는 public이지만 그것은 단지 예일 뿐이다 :). 고마워. 정보를 얻으려면 List 대신 Map을 사용하기로 결정했습니다.이 Map은 "this"표기법과 함께 사용하기 쉽습니다. – Ryu

관련 문제