Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.0.Final</version>
<scope>provided</scope>
</dependency>
Then i have an interface that contain basic
@Named
method:
public interface CommonConverter {
@Named("formatDateString")
default String formatDateString(Date date){
if(date == null){
return null;
return DateUtils.formatDateString(date);
@Named("formatStringDate")
default Date formatStringDate(String dateStr){
if(StringUtils.isEmpty(dateStr)){
return null;
return DateUtils.formatStringDate(dateStr);
@Named("convertTimestampToString")
default String convertTimestampToString(Long date) {
if (date == null || date.equals(0L)){
return StringUtils.EMPTY;
return DateUtils.convertTimeToDateStr(date, 0);
Now i have another mapstruct converter which extend CommonConverter
@Mapper(componentModel = "spring")
public interface EmployeeEventConverter extends CommonConverter{
@Mappings({
@Mapping(source = "claimDate", target = "claimDate", qualifiedByName = "formatDateString"),
@Mapping(source = "eventStartDate", target = "eventStartDate", qualifiedByName = "formatDateString"),
//@Mapping(source = "target", target = "targetAsString", qualifiedByName = "formatTargetString"),
@Mapping(source = "target", target = "targets", qualifiedByName = "convertTarget")
EmployeeEventClaimDTO toClaimDTO(EmployeeEventClaimDO entity);
List<EmployeeEventClaimDTO> toClaimDTOs(List<EmployeeEventClaimDO> entities);
This class works ok until i upgrade to 1.4.1.Final
, i got this exception when compile the project:
Qualifier error. No method found annotated with @Named#value: [ formatDateString ].
To overcome this, i need to copy all @Named
to class EmployeeEventConverter
(and many other similar classes) which increase LOC and duplicated code.
Anybody know why it happen and how to solve it?
Thanks
Alternative to extends
instead of extends
you can try the uses
property of the Mapper
annotation.
@Mapper(componentModel = "spring", uses = CommonConverter.class )
public interface EmployeeEventConverter
Reporting issue at MapStruct
This however does feel like an issue with Mapstruct.
Can you check if this problem also exists when using the 1.4.2.Final
version or the 1.5.0.RC1
version? If so then please create an issue at https://github.com/mapstruct/mapstruct/issues.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.