Question

Je définis ma propriété d'entité

@GeneratedValue
Long id;

et j'ai pu générer l'identifiant de l'entité dans la base de données. Ma question est pourquoi toutes les entités partagent le même numéro incrémentiel? chaque table ne devrait-elle pas compter à partir de zéro?

Était-ce utile?

La solution

Cela dépend de la base de données sous-jacente. GenerationType est AUTO par défaut et Hibernate choisit une des trois variantes en fonction de la base de données. Si vous souhaitez en utiliser un en particulier, définissez-le comme attribut de @GeneratedValue

Autres conseils

Cela dépend de la base de données. Les implémentations JPA utilisent différents générateurs d'ID en fonction du système de base de données utilisé. Par exemple, avec Oracle, une seule séquence sera créée et utilisée pour générer des ID pour tous les types d'entité. Par défaut, il ne créera pas de séquence pour chaque entité, car il n'y a généralement aucune raison de le faire. La même logique s'applique aux autres systèmes de base de données qui utilisent des séquences plutôt que des colonnes à incrémentation automatique.

Je ne suis pas sûr à 100% si l'API JPA vous permet de modifier ce comportement, mais je sais que les annotations d'Hibernate le font. Cependant, vous ne nous avez pas indiqué quelle base de données vous utilisez ou quelle implémentation de JPA vous utilisez, je ne peux donc pas vous donner beaucoup plus de conseils que cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top