Я хочу использовать двоичный UUID в базе данных MariaDB, используемой для проекта весенней загрузки, вместо использования varchar uuid.На данный момент я могу создавать, сохранять и искать двоичный UUID, переопределив длину столбца до 16, но я должен вручную поместить аннотацию @Column(length=16)
в любое поле UUID.
Есть ли способглобально сделал эту модификацию в проекте?Другими словами, существует ли способ, что для всех полей UUID в проекте jpa / hibernate создает столбец «двоичный (16)» вместо «двоичный (255)»?
Моя проблема заключается в том, чтопо умолчанию UUID преобразуется в двоичный код (255) в MariaDB, и с этой конфигурацией запросы репозитория JPA не могут найти никаких данных при поиске по полю UUID.
Для выполнения запросов к репозиториям Jpa,Я должен добавить @Column(length=16)
в любое поле UUID.
Я пытался использовать "@Converter", но аннотацию Convert не следует использовать для указания преобразования следующих объектов: атрибуты Id, атрибуты версии,атрибуты отношений и т. д. И он не работает с полем отношений uuid.
Я также пытался использовать свой собственный тип спящего режима (пример здесь: https://www.maxenglander.com/2017/09/01/optimized-uuid-with-hibernate.html), но запросы к репозиториям jpaничего не найти.
Теперь у меня есть это: Моя абстрактная сущность:
public abstract class GenericEntity {
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
@Column(length = 16)
private UUID id;
//...
}
При использовании uuid в другом объекте:
public abstract class AnotherEntity extends GenericEntity {
@NotNull
@Column(length = 16)
private UUID owner;
//...
}
I'mищу путьпереопределить генерацию поля UUID, не помещая "@Column (length = 16)" везде.
Было бы действительно здорово избежать ошибок и / или пропусков при использовании типа UUID в других функциях.
Большое спасибо!