1
두 데이터 세트를 사용하여 JAXb 변환기에서 생성 된 데이터 A와 데이터 B를 고려해 보겠습니다.JAXb 객체의 도저 매핑 컬렉션
// Data A
public class CompanyA {
private List<EmployeeA> empList;
}
public class EmployeeA{
private List<AddressA> addList;
}
public class AddressA{
private String city;
}
// Data B
public class CompanyB {
private List<EmployeeB> empList;
}
public class EmployeeB{
private List<AddressB> addList;
}
public class AddressB{
private String city;
}
, 아래의 코드를 확인이 생성된다 JAXB는 [비 컬렉션 필드]/세터 (안 위 코드에서 언급 한) 모든] 게터와 사물. Dozer API로 매핑을 시도했지만 부모 개체 만 매핑되었지만 매핑 컬렉션 중에 null 포인터 예외가 발생합니다. 매핑 문제를 해결하기 위해 매핑 방법 아래 시도
,
mapping(CompanyA.class, CompanyB.class)
.fields(field("empList").accessible(true), field("empList").accessible(true));
그러나 위의 방법의 결함은 그 객체 내가
accessible(true)
으로 모든 객체에 대해 언급하는 것보다 중첩 된 목록 개체를 포함하는 경우
매핑 구성에서 모든 매핑 시나리오를 언급하지 않고 모든 컬렉션 개체를 매핑 할 수있는 다른 방법.
각 속성에 대한 setter/getter 메서드가있는 경우 왜'accessible'을'true'로 설정해야합니까? – araknoid
@araknoid - 목록과 같은 부분을 놓친 JaxB가 수집을 위해 setter를 발생시키지 않는 것처럼 (목록 등) – napster
우리 사무실에서도이 문제가 발생했습니다. 다른 사람들이 무엇을 말해야하는지 확인하십시오 (https://stackoverflow.com/questions/13913000/why-doesnt-jaxb-generate-setters-for-lists). Dozer를 사용하여 대안을 찾기보다는 수동으로 set 메소드를 만드는 것이 더 좋을 수도 있습니다. Dozer는 JaxB의 콜렉션을 고려하지 않습니다. – Ray