Преобразование HeapByteBuffer в UUID - PullRequest
0 голосов
/ 07 октября 2019

Мое приложение основано на реактивном Spring, mysql. Когда я пытаюсь получить данные из базы данных mysql, я получаю сообщение об ошибке «org.springframework.core.convert.ConverterNotFoundException: не найден конвертер, способный преобразовать тип [java.nio.HeapByteBuffer] в тип [java.util.UUID]».

Я пытался добавить конвертер в WebConfig, который реализует WebFluxConfigurer, однако, когда Spring ищет конвертер, он не может найти его из-за ByteBuffer, а не HeapByteBuffer (этот класс защищен, который расширяет ByteBuffer).

@Configuration
@EnableWebFlux
public class WebConfig  implements WebFluxConfigurer {

    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new ByteBufferToUUIDConverter());
    }
}

и фиктивный код преобразования

public class ByteBufferToUUIDConverter implements Converter<ByteBuffer, UUID>, ConditionalConverter {
    private Logger logger = LogManager.getLogger(ByteBufferToUUIDConverter.class);

    @Override
    public UUID convert(ByteBuffer source) {
        return null;
    }

    @Override
    public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
        logger.debug(":TypeDescriptor " + sourceType + ", " + targetType);
        return true;
    }
}

1 Ответ

0 голосов
/ 10 октября 2019

После попытки обернуть ByteBuffer и его подклассы я нашел более простое решение.

  1. Измените UUID в @Entity на byte[]
  2. Удалить ненужные классы.
...