Hibernate - Изменить тип UUID по умолчанию с двоичного на текстовый в базе данных SQLite - PullRequest
0 голосов
/ 10 января 2019

Я использую Hibernate v5.4.0.Final с SQLite с этим диалектом , но когда я создаю таблицу со столбцом UUID, она сохраняется как BLOB, а не как текст в базе данных.

Например:

enter image description here

Я хочу сохранить данные в виде текста, чтобы просмотреть их в базе данных, и нашел это решение , которое прекрасно работает при использовании @Type(type = "uuid-char") в поле столбца.

Однако в моем приложении у меня нет доступа к классам таблиц, поэтому я не могу легко добавить эту аннотацию к полю.

В некоторых комментариях / ответах на вопрос, который я связал, утверждалось, что вы можете создать подкласс используемого вами диалекта и использовать registerColumnType () в конструкторе, но это, похоже, не работает, и ответу 9 лет, поэтому я не находите это удивительным.

Как можно переопределить тип UUID по умолчанию?

1 Ответ

0 голосов
/ 10 января 2019

Я действительно рекомендую хранить ваши UUID в таблице SQLite в виде 16-байтовых двоичных BLOB. Это наиболее компактный и эффективный способ хранения UUID в базе данных SQL. Если вам нужен способ просмотра двоичных UUID в виде текста, то этот вопрос SO предлагает несколько вариантов:

SELECT hex(uuid) FROM yourTable
SELECT quote(uuid) FROM yourTable

Если вы действительно хотите сохранить свои UUID в виде строк, то вам следует преобразовать их в строку на уровне Java / Hibernate, например,

String uuid = UUID.randomUUID().toString();

Затем просто аннотируйте соответствующий столбец SQLite как текст и обрабатывайте его как любой другой текстовый столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...