Java JAXb对象中的Dozer映射集合 我有两个数据集,让我们考虑从JAXB转换器生成的数据A和数据B。检查下面的代码段 // 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; }

Java JAXb对象中的Dozer映射集合 我有两个数据集,让我们考虑从JAXB转换器生成的数据A和数据B。检查下面的代码段 // 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; },java,jaxb,dozer,Java,Jaxb,Dozer,但上述方法的缺陷在于,如果对象包含嵌套的列表对象,那么对于所有具有accessible(true) 我可以尝试映射所有集合对象的任何其他方法,而不必提及映射配置中的所有映射场景。在project pom.xml中添加了以下参数,以生成所有对象(包括集合)的setter -XtoString -Xsetters -Xsetters模式=直接 .... 这将强制为JaxB中的所有对象生成setter。如果每个属性都有setter/getter方法,为什么需要将accessible设置为true呢

但上述方法的缺陷在于,如果对象包含嵌套的列表对象,那么对于所有具有
accessible(true)


我可以尝试映射所有集合对象的任何其他方法,而不必提及映射配置中的所有映射场景。

在project pom.xml中添加了以下参数,以生成所有对象(包括集合)的setter


-XtoString
-Xsetters
-Xsetters模式=直接
....

这将强制为JaxB中的所有对象生成setter。

如果每个属性都有setter/getter方法,为什么需要将
accessible
设置为
true
呢?@aranoid-错过了列表部分,更正了问题,因为JaxB生成了这些属性,因此没有用于收集的setter(如list等)我们在我的办公室也面临着这个问题。检查别人说了什么。手动创建set方法可能比使用Dozer寻找解决方法更好。因为Dozer没有考虑JaxB在集合方面的问题account@Ray-我们继续以相同的方式生成对象的setter。
mapping(CompanyA.class, CompanyB.class)
                .fields(field("empList").accessible(true), field("empList").accessible(true));
<configuration>
    <arguments>
       <argument>-XtoString</argument>
       <argument>-Xsetters</argument>
       <argument>-Xsetters-mode=direct</argument>
    </arguments>
    ....
</configuration>