Сохранение строки, отличной от UUID, в поле UUID в postgresql

#java #postgresql-9.4

#java #postgresql-9.4

Вопрос:

У меня есть несколько строк, таких как 12344 (4-5-значные числа), которые я хочу сохранить в таблице postgresql с типом данных столбца как UUID. Это столбцы, которые необходимо проиндексировать. Из документа кажется, что UUID — это поле, имеющее некоторый формат, например a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11, с количеством 128 бит.

Итак, возможно ли сохранить строку, подобную 12344, в поле данных UUID? В настоящее время появляется «ошибка ввода строки недопустимого типа»

   pstmt.setObject(1,"12344",java.sql.Types.OTHER);
  

Комментарии:

1. Нет, невозможно. Столбец с типом данных uuid не принимает недопустимые UUID.

2. Хорошо, спасибо за подтверждение

Ответ №1:

Не напрямую. Но вы можете создать UUID из длинного значения:

     long val = 12344;
    pstmt.setObject(1,new UUID(0, val),java.sql.Types.OTHER);
  

Обратите внимание, что значение будет «UUID-encoded», поэтому вы не сможете что-то сделать select * from table where val = 12344 . Сначала вам нужно будет вычислить соответствующий UUID.