2017-01-19 70 views
0

我有以下豆ModelMapper - 未能轉換ArrayList中列出

public class Ticket extends BaseEntity { 
    private ForeignCollection<TicketDetail> ticketDetails; 
} 

public class TicketDto extends BaseDto { 
    private List<TicketDetailDto> ticketDetails; 
} 

而且我的映射,使用ModelMapper,一個List<TicketDto>List<Ticket>

List<TEntity> entities = mapper.map(dtoList, new TypeToken<List<Ticket>>(){}.getType()); 

但它拋出以下Exception和Stacktrace

1) Converter [email protected] failed to convert java.util.ArrayList to java.util.ArrayList. 

1 error 
    at org.modelmapper.internal.Errors.throwMappingExceptionIfErrorsExist(Errors.java:374) 
    at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:69) 
    at org.modelmapper.ModelMapper.mapInternal(ModelMapper.java:497) 
    at org.modelmapper.ModelMapper.map(ModelMapper.java:429) 

Caused by: org.modelmapper.MappingException: ModelMapper mapping errors: 

1) Failed to set value '' on com.pichardo.metalesbc.infrastructure.domainentities.Ticket.setTicketDetails() 

1 error 
    at org.modelmapper.internal.Errors.toMappingException(Errors.java:258) 
    at org.modelmapper.internal.PropertyInfoImpl$MethodMutator.setValue(PropertyInfoImpl.java:118) 
    at org.modelmapper.internal.MappingEngineImpl.setDestinationValue(MappingEngineImpl.java:250) 
    at org.modelmapper.internal.MappingEngineImpl.propertyMap(MappingEngineImpl.java:181) 
    at org.modelmapper.internal.MappingEngineImpl.typeMap(MappingEngineImpl.java:132) 
    at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:101) 
    at org.modelmapper.internal.converter.IterableConverter.convert(IterableConverter.java:49) 
    at org.modelmapper.internal.MappingEngineImpl.convert(MappingEngineImpl.java:337) 
    at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:96) 
    at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:60) 
    ... 50 more 
Caused by: java.lang.IllegalArgumentException: argument type mismatch 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.modelmapper.internal.PropertyInfoImpl$MethodMutator.setValue(PropertyInfoImpl.java:116) 

它似乎是從票證 - > TicketDto,但當TicketDto - > Ticket時失敗。

任何幫助,非常感謝。

回答

0

有點愚蠢,但ORMLite也接受Collection國外收集領域。所以:

public class Ticket extends BaseEntity { 
    private Collection<TicketDetail> ticketDetails; 
}