我有一个使用 Spring Data 的 Springboot 应用程序。仅出于测试目的,我使用嵌入式 H2 数据库并通过 data.sql 文件加载一些初始数据。我的实体用
注释@Id
@GeneratedValue(strategy = GenerationType.AUTO)
我面临的问题:对于 id 的生成(当我保留一些对象时),我的初始数据(在 data.sql 中)中已经使用的 id 值没有被考虑在内。结果导致冲突,因为 Hibernate 可能会尝试使用已经使用过的 Id。一种解决方案是将 GenerationType 更改为 IDENTITY
,但我不愿意这样做,因为在生产中我更喜欢使用 GenerationType.AUTO。
处理此问题的最佳做法是什么?
最佳答案
Tim Biegeleisen 似乎已经说服了您:使用 IDENTITY
似乎在两种情况下都有效。
我现在推荐的替代方法是使用 Testcontainers在测试中使用 Postgres 并删除 H2。
关于hibernate - 使用 H2 自增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57855440/