H2 内存数据库和自定义@GenericGenerator 策略

H2 in-memory database and custom @GenericGenerator strategy

我试过像 Bypass GeneratedValue in Hibernate (merge data not in db?) 那样使用自定义 id-generator,它在使用 Postgres DB 时工作正常。我的代码等于示例中的代码。 但是当 运行 使用 H2 内存数据库进行测试时,我遇到了问题,该 ID 不是自动生成的。

没有自定义生成器

@Column(name = "id", nullable = false)
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

生成创建table脚本

create table db.schema.entity (id  bigserial not null...

使用自定义生成器

@Column(name = "id", nullable = false)
@Id
@GeneratedValue(generator = "idGenerator", strategy = GenerationType.IDENTITY)
@GenericGenerator(name="idGenerator", strategy = "...UseIdOrGenerate")
private Long id;

生成创建table脚本

create table db.schema.entity (id int8 not null...

因此测试不起作用。

通过更改@Column 解决

@Column(name = "id", nullable = false, columnDefinition = "bigserial")