使用JAVA UUID作为主键时H2内存数据库错误“数据转换错误转换”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用JAVA UUID作为主键时H2内存数据库错误“数据转换错误转换”相关的知识,希望对你有一定的参考价值。

使用Java生成的UUID与Spring Data和uui2时出现以下错误。在这里不同的其他问题,UUID是由Java生成的,而不是由数据库生成的。

Caused by: org.h2.jdbc.JdbcSQLException: 
Data conversion error converting "X'aced00057372000e6a....72c41427e' 
(MYTABLE: FIELDID UUID NOT NULL)"; SQL statement:
insert into mytable (field1, filed2, fieldid) values (?, ?, ?) 
-- (?1, ?2, ?3) [22018-192]

我在pom.xml上有1.4.192 H2版本。

答案

H2 Database在1.4.193版本上获得了以下新功能

PR #353: Add support for converting JAVA_OBJECT to UUID
http://www.h2database.com/html/changelog.html

所以,我只需要在pom.xml上将我的H2版本更新到1.4.193或主要来解决我的问题。

以上是关于使用JAVA UUID作为主键时H2内存数据库错误“数据转换错误转换”的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UUID 作为 HSQLDB 列的默认值

在 H2 数据库引擎中为 UUID 类型的主键列指定默认值?

Java UUID是不是区分大小写

Java UUID是不是区分大小写

为什么分布式数据库中不使用uuid作为主键?

java UUID.randomUUID()自动生成主键作为Id或文件路径