3
"a"개체가 "b"개체에 매핑되면 단방향 필드 만 매핑됩니다. "b"가 "a"로 매핑되면 해당 필드는 매핑되지 않습니다.Dozer 매핑 필드 유형 = "단방향"이 예상대로 작동하지 않습니다.
아래의 코드에서 "b"는 여전히 "a"에 매핑됩니다. 위의 코드를 실행
<mapping >
<class-a>com.examples.source.Source</class-a>
<class-b>com.examples.destination.Destination</class-b>
<field type="one-way">
<a set-method="setIRCCode" get-method="getIRCCode">ircCode</a>
<b set-method="setIrcCode" get-method="getIrcCode">ircCode</b>
</field>
</mapping>
package com.examples.source;
public class Source {
protected String ircCode;
public String getIRCCode() {
return ircCode;
}
public void setIRCCode(String value) {
this.ircCode = value;
}
}
package com.examples.destination;
public class Destination {
private String ircCode;
public String getIrcCode() {
return this.ircCode;
}
public void setIrcCode(String ircCode) {
this.ircCode = ircCode;
}
}
public class Mapping {
public static void main(String[] args) {
DozerBeanMapper mapper = new DozerBeanMapper(Arrays.asList(new String[]{"Dozer-Mapping.xml"}));
Destination destinationObj=new Destination();
destinationObj.setIrcCode("B");
Source srcObj= mapper.map(destinationObj, Source.class);
System.out.println("Reverse Mapping IRCCode= "+ srcObj.getIRCCode());
}
}
출력 :
Reverse Mapping IRCCode= B **(Unexpected and Wrong Result)**
예상되는 결과는 다음과 같습니다
Reverse Mapping IRCCode= null
나는 도저 5.4.0 버전을 사용하고 있습니다.