我有一个使用Spring Data的Springboot应用程序。仅出于测试目的,我使用嵌入式H2 DB并通过data.sql文件加载一些初始数据。我的实体用
注释@Id
@GeneratedValue(strategy = GenerationType.AUTO)
我面临的问题:对于ID的生成(当我保留一些对象时),未考虑初始数据(在data.sql中)已经使用的ID值。结果是发生冲突,因为Hibernate尝试使用已使用的ID可能会发生。一种解决方案是将GenerationType更改为IDENTITY
,但我不愿意这样做,因为在生产中我更喜欢使用GenerationType.AUTO。
处理此问题的最佳做法是什么?
答案 0 :(得分:1)
Tim Biegeleisen似乎已经说服了您:使用IDENTITY
似乎在两种情况下都有效。
我现在推荐的替代方法是在测试中将Testcontainers与Postgres一起使用并丢弃H2。