使用 H2 自动增量

Jul*_*oud 4 hibernate h2 spring-data-jpa spring-boot

我有一个使用 Spring Data 的 Springboot 应用程序。仅出于测试目的,我使用嵌入式 H2 DB 并通过 data.sql 文件加载一些初始数据。我的实体注释为

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Run Code Online (Sandbox Code Playgroud)

我面临的问题:对于 id 的生成(当我保留某些对象时),不考虑初始数据(在 data.sql 中)中已使用的 id 值。结果会产生冲突,因为 Hibernate 可能会尝试使用已经使用过的 Id。一个解决方案是将 GenerationType 更改为IDENTITY,但我不愿意这样做,因为在生产中我更喜欢 GenerationType.AUTO 。

处理这个问题的最佳实践是什么?

Jen*_*der 5

Tim Biegeleisen 似乎已经说服了你: Use IDENTITYwhich 似乎在这两种情况下都有效。

现在我推荐的替代方案是在测试中使用带有 Postgres 的Testcontainers并删除 H2。