【问题标题】:MapStruct mapper error: Unknown property "propertyName" in result type Dto. Did you mean "null"?MapStruct 映射器错误:结果类型 Dto 中的未知属性 \"propertyName\"。您的意思是“空”吗?
【发布时间】:2022-10-23 01:27:23
【问题描述】:
// Driver model
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Driver {
    private String driverName;
    private String licenseNumber;
}

// Car model
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Car {
    private String make;
    private List<Driver> drivers;
    private CarType type;
}

// Car DTO
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CarDto {
    private String make;
    private Integer totalDrivers;
    private String type;
}

@Mapper
public interface CarMapper {
    @Mapping(target = "totalDrivers", expression = "java(mapDrivers(car.getDrivers()))")
    CarDto mapCarDto(Car car);

    default Integer mapDrivers(List<Driver> totalDrivers) {
        return totalDrivers.size();
    }

    @InheritInverseConfiguration
    @Mapping(target = "drivers", ignore = true)
    Car mapDtoToCar(CarDto carDto);
}

当我要运行这个项目时,会报告这些错误:

..\CarMapper.java
java: Unknown property "totalDrivers" in result type CarDto. Did you mean "null"?
java: Unknown property "drivers" in result type Car. Did you mean "null"?

我怎样才能解决这个问题?

【问题讨论】:

    标签: java spring spring-boot mapstruct


    【解决方案1】:

    它可能与龙目岛有关。

    看一眼:

    【讨论】:

    • 不,返回相同的消息,但是在 Initcap 中,结果类型为 Car 的“未知属性”Drivers。您的意思是“null”吗?
    • @SubarataTalukder 好的,也许问题与使用 lombok 有关。我一步一步地用指南更新了答案。
    • 感谢@Paul Marcelin Bejan 的战利品。在我的代码中,一切都是正确的,而不是“Maven 注释处理配置”。我误添加了“lombok”和“lombok-mapstruct-binding”。我按照“指南一步一步:将 Mapstruct 与 Project Lombok 一起使用”。现在一切正常。再次感谢。
    • @SubarataTalukder 只是出于好奇,它是使用小写字母还是使用 Initcap?
    • 它适用于小写字母。就像我上面的代码一样。
    猜你喜欢
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多