MapStruct: сопоставить объект с полем объекта того же типа
Рассмотрим эту ситуацию:
public class Car() {
private Long id;
private String name;
private Car car;
}
public class CarDTO() {
private Long id;
private String name;
private Long carId;
}
Я попытался отобразить из DTO в Entity с этим:
@Mapping(target = "car", source = "carId")
Car toEntity(CarDTO carDTO);
но это не работает Итак, как я могу сопоставить сущность с полем того же типа сущности?
Спасибо Андреа
2 ответа
@Mapping(target = "id", source = "carDTO.carId")
Car toEntity(CarDTO carDTO);
Это должно работать.
Как ответили в MapStruct Google Group
В зависимости от того, что вам нужно. Вы можете сделать:
@Mapping(target = "car.id", source = "carId")
Car toEntity(CarDTO carDTO);
Если в создании Car
от carId
Вы можете сделать эту часть вручную:
@Mapping(target = "car", source = "carId")
Car toEntity(CarDTO carDTO);
default Car resolve(Long id) {
return /* something fancy */;
}
Что-то необычное также может быть вызовом БД для получения Car
оттуда.