Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用生成的类通过2个映射器使用MapStruct传输对象 我有3门课:A、B、C 它们每个都有一个ObjectX字段 类A和C也有ObjectY字段 B类是自动生成的,我不能修改它 我有从A到B的映射器,还有从B到C的映射器,它们没有 include ObjectY(它被忽略)_Java_Oop_Object_Mapstruct_Mapper - Fatal编程技术网

Java 使用生成的类通过2个映射器使用MapStruct传输对象 我有3门课:A、B、C 它们每个都有一个ObjectX字段 类A和C也有ObjectY字段 B类是自动生成的,我不能修改它 我有从A到B的映射器,还有从B到C的映射器,它们没有 include ObjectY(它被忽略)

Java 使用生成的类通过2个映射器使用MapStruct传输对象 我有3门课:A、B、C 它们每个都有一个ObjectX字段 类A和C也有ObjectY字段 B类是自动生成的,我不能修改它 我有从A到B的映射器,还有从B到C的映射器,它们没有 include ObjectY(它被忽略),java,oop,object,mapstruct,mapper,Java,Oop,Object,Mapstruct,Mapper,是否可以通过某种方式修改这些映射器以包含ObjectY(而不添加A到C之间的映射) 映射程序代码如下: @Mapper public interface MyMapper { @Mapping(target = "ObjectX") B AtoB(A a); @Mapping(target = "ObjectX") C BtoC(B b); } 如果我正确理解了问题,您需要将A转换为B,然后将B转换为C,并且您还需要保留ObjectY字段。 问题是B没有ObjectY字段,因此它无法

是否可以通过某种方式修改这些映射器以包含ObjectY(而不添加A到C之间的映射)

映射程序代码如下:

@Mapper
public interface MyMapper {
@Mapping(target = "ObjectX")
  B AtoB(A a);

@Mapping(target = "ObjectX")
  C BtoC(B b);
}

如果我正确理解了问题,您需要将
A
转换为
B
,然后将
B
转换为
C
,并且您还需要保留
ObjectY
字段。 问题是
B
没有
ObjectY
字段,因此它无法通过此转换存储它的值

我想到的唯一解决方案是创建类
MyB
,它扩展类
B
,并包含
ObjectY
字段,然后像这样更改映射器:

public class MyB extends B {
    private ObjectY objectY;
    // getters and setters omitted for brevity
}
但我不确定在您的用例中是否可能

@Mapper
public interface MyMapper {
    MyB AtoB(A a);

    C BtoC(MyB b);
}