下面是一个非常简化的汽车共享模型,其中一个Car
可能被多个User
使用.我需要将服务对象转换为DTO对象,反之亦然:
@Data
public class Car {
private String brand;
private String model;
private List<CarUser> users = new ArrayList<>();
public void linkUser(CarUser user) {
this.users.add(user);
user.setCar(this);
}
}
@Data
public class CarUser {
private String name;
private Car car;
}
@Data
public class CarDTO {
private String brand;
private String model;
private List<CarUserDTO> users = new ArrayList<>();
public void linkUser(CarUserDTO user) {
this.users.add(user);
user.setCar(this);
}
}
@Data
public class CarUserDTO {
private String name;
private CarDTO car;
}
@Mapper
public interface UserConverter {
CarUser convert(final CarUserDTO user);
CarUserDTO convert(final CarUser user);
}
@Mapper(uses = UserConverter.class)
public interface CarConverter {
Car convert(final CarDTO car);
CarDTO convert(final Car car);
}
方法linkUser
创建双向链路,即,它将给定User
与电流Car
相关联,并将电流Car
与给定User
相关联.上述代码片段中的Mapper
的问题在于,类User
/UserDTO
中的car
属性从未设置过,因为转换器当然不会调用linkUser
.有什么方法可以设置该属性吗?这里的棘手之处在于,要设置的Car
实际上是要转换的实例.如有任何帮助,将不胜感激:-)