我正在使用ModelMapper Framework(http://modelmapper.org/)映射Java中的对象。在映射包含抽象类的具体类(DTO到实体)时遇到了一个问题。
示例:任务具有AbstractItems列表。 AbstractItems是问题和条件。
public class TaskDTO { ... private List<AbstractItemDTO> items; }
映射方法:
// task is an TaskDTO object return getModelMapper().map(task, TaskEntity.class);
ModelMapper尝试创建一个AbstractItem的新实例,该实例将引发异常。有没有办法在运行时映射抽象类? 像QuestionDTO-> Question,CriteriaDTO-> Criteria
我用ModelMapper无法解决此问题。因此,我切换到推土机。 推土机 是Java中对象映射的绝佳工具。而且真的很容易使用。您可以在XML文件中定义相应的映射类。
这是文档的链接。http://dozer.sourceforge.net/documentation/mappings.html
我的Spring dozer-bean.xml 解决方案 __
<bean class="org.dozer.spring.DozerBeanMapperFactoryBean" lazy-init="false"> <property name="mappingFiles"> <list> <value>META-INF/mapping/dozer-config.xml</value> </list> </property> </bean>
dozer-config.xml
<mapping> <class-a>com.packagename.dto.QuestionDTO</class-a> <class-b>com.packagename.entities.core.Question</class-b> </mapping> <mapping> <class-a>com.packagename.dto.CriteriaDTO</class-a> <class-b>com.packagename.entities.core.Criteria</class-b> </mapping>