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

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

Barbara Streisand
Libérer: 2024-11-29 05:47:11
original
398 Les gens l'ont consulté

How Can I Generate Database Sequence Values for Non-ID Columns in Hibernate?

Séquence Hibernate pour les colonnes non-ID

L'utilisation de séquences de base de données pour générer des valeurs pour les colonnes de clé non primaire dans Hibernate est une exigence courante. Malheureusement, hibernate ne fournit actuellement aucune méthode intégrée pour y parvenir.

L'annotation @GeneratedValue ne peut être utilisée qu'en conjonction avec @Id pour générer automatiquement des valeurs pour les clés primaires. Le défi se pose car Hibernate suppose que les propriétés non-ID doivent être gérées par l'application utilisateur.

Pour surmonter cette limitation, une solution de contournement consiste à créer une entité distincte avec un identifiant généré automatiquement. Cette entité devient alors responsable de la génération de la valeur de séquence qui peut être attribuée à la propriété non-ID dans l'entité cible.

Considérons l'exemple suivant :

@Entity
public class GeneralSequenceNumber {
  @Id
  @GeneratedValue(...)
  private Long number;
}

@Entity
public class MyEntity {
  @Id
  private Long id;

  @OneToOne(...)
  private GeneralSequenceNumber myVal;
}
Copier après la connexion

Dans ce scénario, un une nouvelle instance de GeneralSequenceNumber est créée et son champ numérique est généré automatiquement. Cette valeur est ensuite attribuée à la propriété myVal dans MyEntity pendant la persistance de l'entité.

Bien que cette solution de contournement ajoute une entité supplémentaire, elle fournit une solution pour gérer les séquences de propriétés non-ID dans Hibernate. En attendant qu'une approche plus transparente soit mise en œuvre, cette méthode offre une solution pratique à ce cas d'utilisation courant.

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