hibernate - 使用 H2 自增

标签 hibernate spring-boot spring-data-jpa h2

我有一个使用 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/

相关文章:

mysql - EclipseLink:连接池和 native 查询

java - org.hibernate.MappingException : Unknown entity

java - 基本属性访问器 :167 - IllegalArgumentException in class in Struts

java - 按关系属性排序

java - 如何在 Activiti Service Task 中立即将实体持久保存/提交到数据库

java - 如何在 Spring Boot 中注册和使用 jackson AfterburnerModule?

java - Spring引导JPA java.lang.IndexOutOfBoundsException : Index: 1, 大小: 1 at java. util.ArrayList.rangeCheck

java - JPA CriteriaBuilder 使用 @MapKeyColumn 生成 Map 为空的查询

java - 存在子查询的 JPA 规范使 SQL Server 语法失败

java - 如何为具有多个同名查询参数的 api 编写假客户端?