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")
我试过像 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")