Maison  >  Questions et réponses  >  le corps du texte

Pourquoi mon SequenceGenerator ignore-t-il les valeurs d'identification ?

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粉919464207P粉919464207204 Il y a quelques jours356

répondre à tous(2)je répondrai

  • P粉547420474

    P粉5474204742024-03-29 16:10:10

    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.

    répondre
    0
  • P粉898049562

    P粉8980495622024-03-29 13:28:53

    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.

    répondre
    0
  • Annulerrépondre