Maison > Java > javaDidacticiel > Comment puis-je générer des séquences de base de données pour les colonnes non ID dans Hibernate JPA ?

Comment puis-je générer des séquences de base de données pour les colonnes non ID dans Hibernate JPA ?

Linda Hamilton
Libérer: 2024-11-30 07:03:19
original
830 Les gens l'ont consulté

How Can I Generate Database Sequences for Non-ID Columns in Hibernate JPA?

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal