Несоответствие типа компонента UuidGenerator?

Поскольку стратегия и UUIDGenerator устарели, это новый генератор UUID:

@GenericGenerator(
            name = "UUID", 
            type = org.hibernate.id.uuid.UuidGenerator.class
    )

При использовании этого я получаю следующую ошибку:

Параметр 0 конструктора в org.hibernate.id.uuid.UuidGenerator требуется bean-компонент типа org.hibernate.annotations.UuidGenerator, который невозможно найти

Мне не удалось найти ничего соответствующего этому в документации.

Для полного раскрытия используется весь блок аннотаций:

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "UUID")
@GenericGenerator(name = "UUID", type = org.hibernate.id.uuid.UuidGenerator.class)
@Column(...)
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
116
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я действительно предлагаю вам использовать @UuidGenerator вместо

@GeneratedValue(strategy = GenerationType.AUTO, generator = "UUID")
@GenericGenerator(name = "UUID", type = org.hibernate.id.uuid.UuidGenerator.class)

Что-то вроде этого:

  @Id
  @UuidGenerator
  private UUID id; // or String

Потому что если вы проверите java docs аннотацию, вы увидите, что @UuidGenerator используйте @IdGeneratorType( org.hibernate.id.uuid.UuidGenerator.class ) то, что вам нужно.

Что касается проблемы, я действительно не знаю, в чем может быть проблема, но решение, которое я предлагаю, поможет вам выполнить эту замену, указав @UuidGenerator, мы можем выбрать конкретную версию UUID для генерации.

А также некоторая мотивация к его использованию описана в 8.5. Пользовательские генераторы

Эти API являются новыми в Hibernate 6 и заменяют классический интерфейс IdentifierGenerator и аннотацию @GenericGenerator из старых версий Hibernate.

@UuidGenerator Более гибкий генератор для RFC 4122 UUID.

Спасибо. Более гибкий означает, что вы можете настроить больше с помощью @UuidGenerator, а не с помощью @GenericGenerator. Можно подробнее об этом вкратце?

J. M. Arnold 19.09.2023 13:37

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