Как можно сопоставить дочерние объекты с их UUID с помощью ModelMapper для всех объектов? - PullRequest
0 голосов
/ 11 октября 2019

Я хочу отобразить дочерние объекты по их UUID. Как в примере ниже, но вместо сериализации класс Beta должен быть сопоставлен с его UUID. На данный момент у меня есть преобразование в классе mapper для каждой сущности и выборка объекта по его UUID из базы данных. Я хотел бы иметь автоматизированный способ, чтобы все классы, которые расширяют Alpha, отображались по их UUID.

В данный момент я делаю UUID-отображение в классе Mapper, который является большим дублированием кода для всех сущностей. Для класса Delta это будет выглядеть так. Код специально упрощен.

@Service
class DeltaMapper {
  @Autowired
  ModelMapper modelMapper;

  convertToDto(Delta delta){
    deltaDto = modelMapper.map(d, DeltaDto.class);
    if(delta.beta != null) {
      deltaDto.beta = delta.uuid
    }
  }

  convertToEntity(DeltaDto deltaDto){
    delta = modelMapper.map(deltaDto, D.class);
    if(deltaDto.beta != null){
      delta.beta = repository.find(deltaDto.beta)
    }
  }
}

Сущности выглядят следующим образом.

@Entity
class Alpha {
  @Id
  @GeneratedValue(strategy = UuidGenerator.class)
  UUID uuid;
}

@Entity
class Beta extends Alpha {
}

@Entity
class Charlie extends Alpha {
}

@Entity
class Delta extends Alpha {
   Beta beta;
}

@Entity
class Echo extends Alpha {
   Charlie charlie;
}

Мой вопрос: есть ли лучший способ сопоставления сущностей с их UUID?

...