首页 > 解决方案 > 在 MapStruct 中抛出 noSuchMethodError

问题描述

我在我的实体和我的 dto 中定义了一个布尔值和一个枚举

@Entity
public class ConfigurationItemEntity {

    @Id
    private String externalId;

    private ConfigurationTypeEnum configurationType;

    private boolean active;

    public String getExternalId() {
       return externalId;
    }

    public void setExternalId(String externalId) {
       this.externalId = externalId;
    }

    public ConfigurationType getConfigurationType() {
       return configurationType;
    }

    public void setConfigurationType(ConfigurationType configurationType) {
       this.configurationType = configurationType;
    }

    public boolean isActive() {
       return active;
    }

    public void setActive(boolean active) {
       this.active = active;
    }

}

public class ConfigurationItem {

    private String externalId;

    private ConfigurationTypeEnum configurationType;

    private boolean active;
}

我想将 dto 映射到实体

@Mapper(componentModel = "spring")
public interface ConfigurationItemMapper {

    ConfigurationItemEntity configItemDomainToConfigItemEntity(ConfigurationItem configurationItem);

}

但我得到这个错误

java.lang.NoSuchMethodError: com.xx.mapper.ConfigurationItemMapper.configItemDomainToConfigItemEntity(Lcom/xx/uc/health/administration/ConfigurationItem;)Lcom/xx/entities/ConfigurationItemEntity;

标签: javaspringmapstruct

解决方案


根据 MapStruct 文档

MapStruct 是一个注解处理器,它插入到 Java 编译器中,可用于命令行构建(Maven、Gradle 等)以及您首选的 IDE。

它在compilemaven 生命周期阶段工作,因此请确保mvn clean compile在使用它之前运行。您可以通过查看来验证生成的映射器target/generated-sources(这是它们默认生成的地方)


推荐阅读