首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModelMapper -未能将ArrayList转换为列表

ModelMapper -未能将ArrayList转换为列表
EN

Stack Overflow用户
提问于 2017-01-19 00:41:41
回答 1查看 7.6K关注 0票数 2

我有以下豆子

代码语言:javascript
复制
public class Ticket extends BaseEntity {
    private ForeignCollection< TicketDetail > ticketDetails;
}

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

我正在映射,使用ModelMapper,一个List<TicketDto>到一个List<Ticket>

代码语言:javascript
复制
List<TEntity> entities = mapper.map( dtoList, new TypeToken<List<Ticket>>(){}.getType() );

但是它会引发以下异常和Stacktrace

代码语言:javascript
复制
1) Converter org.modelmapper.internal.converter.CollectionConverter@5d884430 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 ->票证出现时,它就失败了。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-19 15:13:41

有点愚蠢,但ORMLite也为外部集合字段接受Collection。所以:

代码语言:javascript
复制
public class Ticket extends BaseEntity {
    private Collection< TicketDetail > ticketDetails;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41731927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档