Utilisation d'une séquence de base de données pour les colonnes non ID dans Hibernate JPA
Lorsque vous travaillez avec Hibernate en tant que fournisseur JPA, vous pouvez rencontrer le besoin pour générer des valeurs pour les colonnes qui ne font pas partie de l'identifiant. Malheureusement, l'annotation @GeneratedValue, couramment utilisée pour l'auto-incrémentation des clés primaires, n'est pas applicable dans ce scénario.
Tout d'abord, il est important de comprendre qu'Hibernate/JPA ne génère pas automatiquement de valeurs pour les propriétés non-ID. L'annotation @GeneratedValue est uniquement utilisée pour gérer la génération de clé primaire. Au lieu de cela, des valeurs générées par la base de données sont attendues.
Pour surmonter cette limitation, envisagez de créer une entité distincte avec un identifiant généré, connue sous le nom d'« entité clé de substitution ». La colonne Non-ID en question peut alors être associée à cette entité de substitution à l'aide d'une relation OneToOne.
Exemple de mise en œuvre :
// Surrogate Key Entity @Entity public class SurrogateEntity { @Id @GeneratedValue(...) private Long number; } // Main Entity @Entity public class MyEntity { @Id private Long id; @OneToOne(...) private SurrogateEntity myVal; }
Avec cette approche, la valeur pour la propriété myVal sera généré par la base de données lors de la création d'une nouvelle instance MyEntity. Cette solution de contournement vous permet d'utiliser les capacités de gestion des valeurs générées par la base de données d'Hibernate pour les colonnes non ID.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!