Можно ли настроить JPA для использования UUID для @Version в оптимистическом параллелизме - PullRequest
0 голосов
/ 23 января 2019

Есть ли способ настроить или переопределить аннотацию JPA @Version для использования строк (UUID)?

У меня есть простой пример работы оптимистичного параллелизма с использованием int в соответствии с примерами

int version

@Version
Public Integer getVersion ()
    return version;
...

У нас есть требование взглянуть на использование GUID вместо версий (на данный момент хранится в базе данных Postgresкак персонаж варьируется на 100).

Я буду честен, мой пример работал недавно и еще не слишком много копался.Моя первая попытка была немного обнадеживающим выстрелом в темноте -

String version

@Version @GeneraedValue(generator="system-uuid")
Public String getVersion ()
    return version;
...

В основном я думаю, что именно так вы используете UUID для первичных ключей.Я думаю, если бы это сработало, они бы это задокументировали!

Я уверен, что слышал, что это возможно, хотя, хотя мое первоначальное поисковое использование ничего не додумало, я решил спроситьесли бы кто-то делал это раньше или мог бы указать мне в сторону грубого подхода (я предполагаю, что это будет немного глубже, чем моя простая попытка)?

1 Ответ

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

Нет, спецификация JPA не допускает этого. На основе времени или числа. И у вас, конечно, никогда не будет стратегии генерации для одной, так как это для PK, и так как версия назначается непосредственно провайдером JPA.

Из Javadoc для @Version

Для свойств версии поддерживаются следующие типы: int, Целое, короткое, короткое, длинное, длинное, java.sql.Timestamp.

...