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()
,
Так, что происходит?