Car*_*ann 8 hibernate h2 spring-data hibernate-spatial
我们使用 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 中找不到与此问题匹配的问题,而且不知何故我也无法创建一个问题。
小智 24
我很确定原因是 Hibernate / Hibernate Spatial 中 UUID 和几何类型之间的冲突。请参阅此问题:https://hibernate.atlassian.net/browse/HHH-11490
此问题应在 5.4.31 及更高版本中得到解决。
也可以通过显式注释id成员变量来解决
@Column(columnDefinition = "uuid")。
| 归档时间: |
|
| 查看次数: |
7405 次 |
| 最近记录: |