私は2つのデータセットを持ち、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)
他のアプローチでは、すべてのコレクションオブジェクトをマップすることができます。マッピングのシナリオをすべてマッピングする必要はありません。
プロパティごとにセッター/ゲッターメソッドがある場合、なぜ 'accessible'を' true'に設定する必要がありますか? – araknoid
@araknoid - リストのようなコレクションを作成しないJaxBが生成されたもの(リストなど) – napster
私たちは私のオフィスでもこの問題に直面しました。他の人が[ここ](https://stackoverflow.com/questions/13913000/why-doesnt-jaxb-generate-setters-for-lists)と言うことを確認してください。 Dozerで回避策を見つけるのではなく、手動でsetメソッドを作成するほうが良いかもしれません。 DozerはJaxBのコレクションに関する問題を考慮していないので、 – Ray