当使用JPA和序列分配大小为“ 20”的数据进行持久化时,将查询数据库以获取下一个要使用的20个ID,因此存储的实体的ID值为1、2、3,..
但是,如果在(h2)DB上进行直接SQL INSERT
的操作,则ID实际会增加“ 20”,从而导致ID值:21、41、61,...
有一种方法可以保持JPA处理,而SQL INSERT
增加id也只能是“ 1”,结果是:21、22、23,...?
Java JPA实体
@Id
@SequenceGenerator( name="team_gen", sequenceName="team_seq", initialValue=1, allocationSize=20 )
@GeneratedValue( strategy=GenerationType.SEQUENCE, generator="team_gen" )
private Long id;
SQL
CREATE SEQUENCE team_seq START WITH 1 INCREMENT BY 20;
CREATE TABLE IF NOT EXISTS team (
id BIGINT DEFAULT team_seq.nextval PRIMARY KEY,
team_name VARCHAR(255) NOT NULL
);
我正在将Spring Boot与H2和Flyway一起用于通过SQL进行数据库迁移。
编辑并解释为什么它不是重复项: other question专注于所有使用休眠模式完成的插入顺序,而我的问题要求以下方式: