小编Car*_*ann的帖子

无法使用 Hibernate 在 H2 2.0.202 中存储 UUID

我们使用 H2 进行集成测试已经有一段时间了。现在 H2 2.0.202 已经发布,我们正在尝试将代码库升级到它。我们无法持久保存使用 java.util.UUID 作为类型的实体。考虑下面的例子

public class MyEntity {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private UUID id;
}
Run Code Online (Sandbox Code Playgroud)

如果我们尝试使用 Hibernate 将其保存在 H2 数据库中,则会失败并显示JdbcSQLDataException消息Value too long for column。测试很简单

@DataJpaTest
class H2Test {

  @Autowired MyRepository myRepository;

  @Test
  void testSave() {
    myRepository.save(new MyEntity());
    Assertions.assertThat(myRepository.findAll()).hasSize(1);
  }
}

Run Code Online (Sandbox Code Playgroud)

您可以在PasteBin上找到完整的堆栈跟踪。

我们正在使用 org.hibernate.spatial.dialect.h2geodb.GeoDBDialect,这似乎是此问题的原因之一。如果我们删除它,上面的简单测试用例就可以正常工作,不幸的是我们正在使用空间数据,所以我们需要这种方言。我想知道这是否只是 H2 2.0.202 和 Hibernate 之间缺少兼容性?或者我们可以在配置中做些什么?我在 hibernate jira 中找不到与此问题匹配的问题,而且不知何故我也无法创建一个问题。

hibernate h2 spring-data hibernate-spatial

8
推荐指数
1
解决办法
7405
查看次数

标签 统计

h2 ×1

hibernate ×1

hibernate-spatial ×1

spring-data ×1