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進行映射時,只映射父對象,但在映射集合時將獲得空指針異常。
嘗試以下映射的方法來解決映射問題,
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的解決方法。因爲推土機不會將JaxB的問題與收藏相結合 – Ray