亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

為什么我的 SequenceGenerator 會跳過 id 值?
P粉919464207
P粉919464207 2024-03-28 18:29:23
0
2
498

我在以下代碼中設(shè)置了artistId:

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

有人可以向我解釋為什么我的 ArtistId 有時會跳過值并且亂序嗎?我注意到,即使我嘗試將無效的數(shù)據(jù)插入表中(拋出異常時),該數(shù)據(jù)也會被表條目拒絕,但我的artistId將被無形地填充。這使我的表格處于以下狀態(tài):

artist_id 名字 姓氏
1 馬歇爾 馬瑟斯
3 圖帕克 沙庫爾

正如我所說,我的 ArtistId 值 2 被跳過,因為我嘗試插入已經(jīng)存在的藝術(shù)家,但我設(shè)置它必須是唯一的。因此,異常被拋出,數(shù)據(jù)被拒絕,但我的值為 2 的 id 被以某種方式填充(或者被跳過)。你們能幫我嗎,我該如何解決這個問題以避免這種情況?

P粉919464207
P粉919464207

全部回復(2)
P粉547420474

聽起來您正在使用 Oracle 數(shù)據(jù)庫。 ID 是在插入之前生成的,因此如果插入失敗,ID 就會丟失。此外,當使用服務(wù)器集群時,ID 范圍會分配給每個服務(wù)器,并且在連續(xù)插入之間可能會有很大差異。 簡短的回答是,您不能依賴 ID 是連續(xù)且沒有缺失值的。這很可能適用于其他數(shù)據(jù)庫。

P粉898049562

這幾乎是正常行為。

序列生成器的唯一職責是生成不同的整數(shù)值,僅此而已。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板