簡體   English   中英

如何使用 JPA 設置 MySQL AUTO_INCREMENT

[英]How to set MySQL AUTO_INCREMENT with JPA

我有一個用 JPA 注釋的類:

@Entity
public class Cart {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Min(1000000)
    private Long id;

    private Cart() {}

    public Long getId() {
        return id;
    }
}

使用自動 DDL 這會生成一個 MySQL 表:

CREATE TABLE `cart` (
    `id` BIGINT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`id`)
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1
;

但我希望AUTO_INCREMENT在創建數據庫后具有值1000000

這如何使用 JPA 實現?

親切的問候

史蒂芬

它可以通過 @TableGenerator 注釋實現,如果 JPA 提供程序支持給定注釋。

TableGenerator Annotation 將在那里創建新表,它將保持提供的初始默認值,查詢應該是這樣的。

休眠:

create table cart (
   id bigint not null,
    primary key (id)
)

休眠:

create table cart_id_generator (
   pk_name varchar(255) not null,
    pk_value bigint,
    primary key (pk_name)
)

休眠:

insert into cart_id_generator(pk_name, pk_value) values ('cart',1000000)


@Entity
public class Cart {

    @Id
    @TableGenerator(name = "cart_id_generator", table = "cart_id_generator", pkColumnName = "pk_name", valueColumnName = "pk_value", initialValue = 1000000)
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "cart_id_generator")
    private Long id;

    private Cart() {}

    public Long getId() {
        return id;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM