web-dev-qa-db-fra.com

Comment générer un UUID automatique en utilisant Hibernate sur Spring Boot

Ce que j'essaie de réaliser est de générer un UUID qui est automatiquement attribué lors d'une insertion de base de données. Similaire à la colonne de clé primaire nommée "id" générant une valeur id.

Les valeurs du modèle ressemblent à ceci:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false)
private Long id;


@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "uuid", columnDefinition = "BINARY(16)")
private UUID uuid;

Mais lorsque l'insertion de la base de données est terminée. le "uuid" est vide.

L'aide est grandement appréciée. Et si je pose une question stupide évidente, je suis désolé.

10
mattts

u pourrait utiliser certains événements comme @PrePersist pour remplir le champ UUID https://docs.jboss.org/hibernate/orm/4.0/hem/en-US/html/listeners.html

mais pourquoi ne pas assigner uuid quand l'objet est créé uuid = UUID.randomUUID ()?

10
Bartun

Peux-tu essayer?

    @Id
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
    @Column(name = "id", columnDefinition = "VARCHAR(255)")
    private UUID id;
17
fg78nc