도저 프레임 워크를 올바르게 평가하고 있습니다.요청에 따라 클래스 인스턴스를 생성하는 방법은 무엇입니까?
클래스 :
는public ClassA {
private Set<ItemA> aItems;
}
public ClassB {
private ClassC cInstance;
}
public ClassC {
private List<ItemB> bItems;
}
도저 매핑 : 지금까지 내 testings를에서
<mapping>
<class-a>ClassA</class-a>
<class-b>ClassB</class-b>
<field>
<a>aItems</a>
<b>cInstance.bItems</b>
</field>
</mapping>
,이하지 않는 것 나는 다음과 같은 사용 사례를 처리 할 수 있는지 궁금 해서요 일하다. 저는 Dozer에게 ClassB 및 ClassC 인스턴스를 필요에 따라 생성해야한다고 어떻게 말해야합니까? 특히 대상 모델에 "중간"클래스로만 존재하는 ClassB에 대한 특정 도저 매핑이 필요합니까?
추신 : 도움이된다면, 내 대상 모델은 JAXB 클래스의
PPS를 구성 : 나는 또한 null의 경우는 ClassC의 새로운 인스턴스를 생성해야 cInstance에 대한 setter 메소드 수정을 시도 - 불행히도없이을 행운. 게다가, 나는 그런 식으로 setter 메소드를 수정하고 싶지 않다. (매핑을 위해 사용될 Factory 클래스에 이것을 아웃소싱 할 수있다.)
와우, 여기서 무엇을하려고하는지 잘 모르겠습니다. Dozer를 복사 도구가 아닌 객체 팩터 리로 사용하려는 것 같습니다. – Perception
cInstance 또는 getter에 대한 설정자를 수정 했습니까? 당신은 전자를 썼지 만 전자는 후자 여야합니다. [딥 매핑] (http://dozer.sourceforge.net/documentation/deepmapping.html)은 원하는 것처럼 들리지만 시도한 것과 비슷하기 때문에 어떻게 실패했는지 알 수 없습니다. [create method] (http://dozer.sourceforge.net/documentation/customCreateMethod.html)는 'cInstance' 필드가 이미 초기화되어있는 경우 ClassB 인스턴스를 생성하는 데 도움이 될 수 있습니다. – MvG
@MvG에 감사드립니다. 그래, 당신 말이 맞을 것이다. 나는 getter가 아니라 setter를 수정했다. 그래서 나는 그것을 다른 방향으로 시도 할 것이다. 당신은 더 깊은 매핑을 시도하고있는 것이 옳다. 특정 create 메소드로 해결 방법을 시도 하겠지만 (처음에는 대상 모델의 생성 된 JAXB 클래스를 수정하려고하지 않았다.) – zazi