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 оттуда.

Другие вопросы по тегам