嵌套字段的 JMapper conversoin 不起作用

时间:2021-02-19 07:54:22

标签: java mapping

JMapper 不调用转换方法。

我有问题。 如下所示,我尝试使用 Jmap 注释映射类,一切正常,除了目标类中 List VehicleType 字段的转换方法。 Jmapper 不调用此方法,我将此字段设为空。 Source.class 中的所有必填字段都有值。

public class Destination {

    @JMap("vehicleVariantDetails")
    protected VehicleVariantDetailsType vehicleVariantDetails;

    @JMapConversion(from = {"vehicleVariantDetails"}, to = {"vehicleVariantDetails"})
    public VehicleVariantDetailsType conversion(List<VehicleVariantDetails> list) {
        if(!list.isEmpty()) {
            JMapper<VehicleVariantDetailsType, VehicleVariantDetails> mapper = new JMapper<>(
                    VehicleVariantDetailsType.class, VehicleVariantDetails.class);
            return mapper.getDestination(list.get(0));
        }
        return null;
    }

public class VehicleVariantDetailsType {

    @JMap("vehicleRunningGearDetails")
    protected VehicleRunningGearDetailsType vehicleRunningGearDetails;
}

public class VehicleRunningGearDetailsType {

    @JMap("vehicleAxleDetails")
    protected List<VehicleAxleDetailsType> vehicleAxleDetails;

    @JMapConversion(from = {"vehicleAxleDetails"}, to = {"vehicleAxleDetails"})
    public List<VehicleAxleDetailsType> conversion(List<VehicleAxleDetails> source) {
        List<VehicleAxleDetailsType> target = new ArrayList<>();

        for(VehicleAxleDetails axle : source) {
            JMapper<VehicleAxleDetailsType, VehicleAxleDetails> mapper = new JMapper<>(
                    VehicleAxleDetailsType.class, VehicleAxleDetails.class);

            VehicleAxleDetailsType dest = mapper.getDestination(axle);
            target.add(dest);
        }
        return target;
    }
}

public class VehicleAxleDetailsType {

@JMap(value = "vehicleAxleDetails", classes = VehicleRunningGearDetails.class)
    protected List<VehicleTyreType> vehicleTyre;

@JMapConversion(from = {"vehicleAxleDetails"}, to = {"vehicleTyre"})
    public List<VehicleTyreType> conversion2(List<VehicleAxleDetails> sourceList) {
        List<VehicleTyreType> target = new ArrayList<>();
        VehicleAxleDetails source = null;

        if(!sourceList.isEmpty()) {
            source = sourceList.get(0);
        }
        if(source!=null) {
            VehicleTyreType dest = new VehicleTyreType();
            dest.setVehicleTyreKindCode(source.getVehicleTyreKindCode());
            dest.setVehicleTyreKindSize(source.getVehicleTyre().getVehicleTyreKindSize());
            target.add(dest);
        }
        return target;
    }
}

public class VehicleTyreType {

protected String vehicleTyreKindCode;
protected String vehicleTyreKindSize;
}


public class Source {

private List<VehicleVariantDetails> vehicleVariantDetails;
}

public class VehicleVariantDetails {

private VehicleRunningGearDetails vehicleRunningGearDetails;
}

public class VehicleRunningGearDetails {

private List<VehicleAxleDetails> vehicleAxleDetails;
}

public class VehicleAxleDetails {

private String vehicleTyreKindCode;
private VehicleTyre vehicleTyre;
}

public class VehicleTyre {

private String vehicleTyreKindSize;
}

有人知道我做错了什么吗?
询问您是否需要更多信息。

0 个答案:

没有答案