I'm using ModelMapper in my rest apps.
I have to convert List to List.
This is my code:
Converter<List<UserRole>,List<String>> listConverter = new Converter<List<UserRole>, List<String>>() {
public List<String> convert(MappingContext<List<UserRole>, List<String>> context) {
List<String> target = new ArrayList<String>();
List<UserRole> userRoles = context.getSource();
for (UserRole userRole : userRoles) {
target.add(userRole.getRole().getName());
}
return target;
}
};
PropertyMap<User, UserDTO> propertiesForConvertToDto = new PropertyMap<User, UserDTO>() {
protected void configure() {
using(listConverter).map(source.getUserRoles()).setRoles(null);
}
};
When I'm running app I get this error:
HTTP Status 500 - Request processing failed; nested exception is org.modelmapper.MappingException: ModelMapper mapping errors:
type Exception report
message Request processing failed; nested exception is org.modelmapper.MappingException: ModelMapper mapping errors:
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.modelmapper.MappingException: ModelMapper mapping errors:
1) Failed to instantiate instance of destination java.util.List. Ensure that java.util.List has a non-private no-argument constructor.
Caused by: java.lang.NoSuchMethodException: java.util.List.<init>()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getDeclaredConstructor(Class.java:2178)
at org.modelmapper.internal.MappingEngineImpl.instantiate(MappingEngineImpl.java:366)
at org.modelmapper.internal.MappingEngineImpl.createDestination(MappingEngineImpl.java:382)
Can You help me? I'm trying solve this problem for five hours. When I'm debugging I knew that converter work correctly. May don't I correctly called converter?
ModelMapper mapper
asmapper.addMappings(propertiesForConvertToDto)
?. Please add yourModelMapper
configuration (important) and the entitiesUser
andUserDto
if is possible with the properties as well (if you want). – Nottingham