'Modelmapper failed to convert java.lang.String to java.sql.Timestamp

main() {
StudentDataDto source= new StudentDataDto();
    studentDataDto.setCreatedAt("2022-01-20T11:12:46");
    StudentMetaDataEntity destination= modelMapper.map(studentDataDto,
        StudentMetaDataEntity.class);
}

StudentDataDto {
private String createdAt;
}

StudentMetaDataEntity {
private Timestamp createdAt; (java.sql.Timestamp)
}

Exception message:

org.modelmapper.MappingException: ModelMapper mapping errors:

1) Converter org.modelmapper.internal.converter.DateConverter@2b08772d failed to convert java.lang.String to java.sql.Timestamp.
Caused by: org.modelmapper.MappingException: ModelMapper mapping errors:

1) String must be in JDBC format [yyyy-MM-dd HH:mm:ss.fffffffff] to create a java.sql.Timestamp

1 error
    at org.modelmapper.internal.Errors.toMappingException(Errors.java:258)
    at org.modelmapper.internal.converter.DateConverter.dateFor(DateConverter.java:125)
    at org.modelmapper.internal.converter.DateConverter.convert(DateConverter.java:70)
    at org.modelmapper.internal.converter.DateConverter.convert(DateConverter.java:53)
    at org.modelmapper.internal.MappingEngineImpl.convert(MappingEngineImpl.java:306)
    at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:109)
    at org.modelmapper.internal.MappingEngineImpl.setDestinationValue(MappingEngineImpl.java:245)
    at org.modelmapper.internal.MappingEngineImpl.propertyMap(MappingEngineImpl.java:187)
    at org.modelmapper.internal.MappingEngineImpl.typeMap(MappingEngineImpl.java:151)
    at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:114)
    at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:71)
    at org.modelmapper.ModelMapper.mapInternal(ModelMapper.java:573)
    at org.modelmapper.ModelMapper.map(ModelMapper.java:406)
...

By referring to this similar question's answers, I understand that the source code of model mapper restrict the timestamp string formats.

My question: Instead of changing my StudentDataDto property type to java.sql.Timestamp, is it possible that I keep my desired timestamp format in yyyy-MM-dd'T'HH:mm:ss and customize my modelmapper converter to solve the exception?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source