Я хочу отобразить дочерние объекты по их 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?