2012-10-17 6 views
0

도저의 딥 매핑 속성을 사용하지 않고 컴포지션을 매핑하고 싶습니다.컴포지션 관계를 매핑하는 방법은 무엇입니까?

또 다른 중요한 요소는 그 합성 클래스와 내가 SO에 검색 한 같은 클래스

의 주요 클래스지도, 도저 (그런데 좋은) 문서,하지만 여전히 I, 천국 '이다

: 내가 좋아하는지도하고 싶지 않아> C

Class A { 
    B b 
    a1 
} 

Class B { 
    b1 
    b2 
} 

Class C { 
    ca1 
    cb1 
    cb2 

} 

- A와 B : t은 제가

예를 찾고 있어요 발견

<mapping> 
    <class-a>B</class-a> 
    <class-b>C</class-b> 
    <field> 
    <a>b1</a> 
    <b>cb1</b> 
    </field> 
    etc. 
</mapping> 
<mapping> 
    <class-a>A</class-a> 
    <class-b>C</class-b> 
    <field> 
    <a>a1</a> 
    <b>ca1</b> 
    </field> 
</mapping> 

내 클래스 B가 다른 클래스의 구성에 사용됩니다 :3210

<mapping> 
    <class-a>A</class-a> 
    <class-b>C</class-b> 
    <field> 
    <a>b.b1</a> 
    <b>cb1</b> 
    </field> 
    etc. 
</mapping> 

내가 좋아하는 뭔가를 사용하고 싶습니다.

DRY (Do not Repeat Yourself)를 존중하고 싶습니다.

답변

0

불행히도 딥 매핑을 사용하고 반복하는 것을 제외하고는 해결책이 없습니다.
Dozer가 C -> A와 B를 매핑하는 것이 문제입니다. 쉽게 가능하지 않습니다.

"단방향"매핑의 경우이 유형의 자동 매핑을 사용할 수 있습니다. 이 Dozer FAQ

0

당신은 당신이 말한대로 B1이 B2에 매핑하는 방법을 말할 수 있어야한다, 깊은 매핑을 지정할 필요가 없습니다 :

<mapping> 
    <class-a>B1</class-a> 
    <class-b>B2</class-b> 
    <field> 
    <a>b1Param1</a> 
    <b>b2Param1</b> 
    </field> 
</mapping> 

그리고 A1이 A2에 매핑 (하지만 방법을 별도의 매핑으로 합성 서브 클래스의 매핑)

<mapping> 
    <class-a>A1</class-a> 
    <class-b>A2</class-b> 
    <field> 
    <a>b1</a> 
    <b>b2</b> 
    </field> 
</mapping> 

도저는 B1 및 B2는 특정 클래스의 객체가 인식 별도의 매핑으로서 제공 될 수있는 둘 사이의 맵핑을 찾을 것이다.

+0

안녕과 유사

복잡한 문제는, 내 문제에 대한 자세한 구체적으로 내 질문에 편집. – Rytek

관련 문제