Mengapakah SequenceGenerator saya melangkau nilai id?
P粉919464207
P粉919464207 2024-03-28 18:29:23
0
2
388

Saya tetapkan artistId dalam kod berikut:

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

Bolehkah seseorang menjelaskan kepada saya mengapa ArtistId saya kadang-kadang melangkau nilai dan menjadi tidak teratur? Saya perasan bahawa walaupun saya cuba memasukkan data tidak sah ke dalam jadual (apabila pengecualian dibuang), data akan ditolak oleh kemasukan jadual, tetapi artistId saya akan diisi secara halimunan. Ini menjadikan jadual saya dalam keadaan berikut:

id_artis Nama Nama belakang
1 Marshall Mathers
3 Tupac Shakur

Seperti yang saya katakan, nilai ArtistId saya 2 sedang dilangkau kerana saya cuba memasukkan artis yang sudah sedia ada, tetapi saya tetapkan ia mestilah unik. Jadi, pengecualian dilemparkan, data ditolak, tetapi id saya dengan nilai 2 entah bagaimana diisi (atau dilangkau). Bolehkah anda membantu saya, bagaimana saya boleh menyelesaikan masalah ini untuk mengelakkan situasi ini?

P粉919464207
P粉919464207

membalas semua(2)
P粉547420474

Kedengarannya seperti anda menggunakan pangkalan data Oracle. ID dijana sebelum memasukkan, jadi jika sisipan gagal, ID hilang. Selain itu, apabila menggunakan kluster pelayan, julat ID diperuntukkan kepada setiap pelayan dan boleh berbeza dengan ketara antara sisipan berturut-turut. Jawapan ringkasnya ialah anda tidak boleh bergantung pada ID yang bersebelahan dan tanpa nilai yang hilang. Ini kemungkinan besar akan berfungsi untuk pangkalan data lain.

P粉898049562

Ini adalah tingkah laku yang hampir normal.

Satu-satunya tanggungjawab penjana jujukan ialah menjana nilai integer yang berbeza, tidak lebih.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan