Pourquoi mon SequenceGenerator ignore-t-il les valeurs d'identification ?
P粉919464207
P粉919464207 2024-03-28 18:29:23
0
2
411

J'ai défini l'artisteId dans le code suivant :

@Id
    @SequenceGenerator(
            name = "artist_sequence",
            sequenceName = "artist_sequence",
            allocationSize = 1
    )
    @GeneratedValue(
            strategy = GenerationType.SEQUENCE,
            generator = "artist_sequence"
    )
    private Long artistId;

Quelqu'un peut-il m'expliquer pourquoi mon ArtistId saute parfois des valeurs et devient déréglé ? J'ai remarqué que même si j'essaie d'insérer des données invalides dans la table (lorsque l'exception est levée), les données seront rejetées par l'entrée de la table, mais mon artisteId sera renseigné de manière invisible. Cela laisse ma table dans l'état suivant :

id_artiste Nom Nom de famille
1 Marshall Mères
3 Tupac Shakur

Comme je l'ai dit, ma valeur ArtistId de 2 est ignorée car j'essaie d'insérer un artiste déjà existant, mais je l'ai défini pour qu'il soit unique. Ainsi, l'exception est levée, les données sont rejetées, mais mon identifiant avec la valeur 2 est en quelque sorte rempli (ou ignoré). Pouvez-vous m'aider, comment puis-je résoudre ce problème pour éviter cette situation ?

P粉919464207
P粉919464207

répondre à tous(2)
P粉547420474

On dirait que vous utilisez une base de données Oracle. L'ID est généré avant l'insertion, donc si l'insertion échoue, l'ID est perdu. De plus, lors de l'utilisation de clusters de serveurs, des plages d'ID sont attribuées à chaque serveur et peuvent varier considérablement entre les insertions consécutives. La réponse courte est que vous ne pouvez pas compter sur la contiguïté des identifiants et sans valeurs manquantes. Cela fonctionnera très probablement pour d'autres bases de données.

P粉898049562

C'est un comportement presque normal.

La seule responsabilité d'un générateur de séquences est de générer différentes valeurs entières, rien de plus.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal