AttributeConverter возвращает неверное значение для UUID из базы данных postgres

Я сделаю все возможное, чтобы объяснить проблему... Это Spring Boot 2.0, Hibernate 5+ и база данных postgres.

У меня есть конвертер, определенный как таковой...

@Converter(autoApply = false)
public class MyEnumConverter implements AttributeConverter<MyEnum, UUID> {

    @Override
    public String convertToDatabaseColumn(MyEnum myEnum) {
        ...
    }

    @Override
    public MyEnum convertToEntityAttribute(UUID uuid) {
        ...
    }
}

Когда значение хранится в базе данных 15bd728e-53ec-4bba-842b-4b1230989b87 аргумент UUID, который передается в метод convertToEntityAttribute, буквально 31356264-3732-3865-2d35-3365632d3462??

После нескольких часов отладки и отслеживания это вызвано строкой #50 в коде UUIDTypeDescriptor. UUIDTypeDescriptor.ToBytesTransformer.INSTANCE.parse(value)

Изменение типа второго универсального аргумента с "UUID" на "String" работает просто отлично...

@Converter(autoApply = false)
public class MyEnumConverter implements AttributeConverter<MyEnum, String> {

    @Override
    public String convertToDatabaseColumn(MyEnum myEnum) {
        ...
    }

    @Override
    public MyEnum convertToEntityAttribute(String uuid) {
        ...
    }
}

Я получаю ожидаемое значение 15bd728e-53ec-4bba-842b-4b1230989b87 прошло как String Аргумент для convertToEntityAttribute. Который я могу затем конвертировать с помощью UUID.fromString(),

Так, что происходит?

0 ответов

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