使用 JAVA UUID 作为主键时 H2 内存数据库错误“数据转换错误转换”
Posted
技术标签:
【中文标题】使用 JAVA UUID 作为主键时 H2 内存数据库错误“数据转换错误转换”【英文标题】:H2 in-memory database error “Data conversion error converting” when using JAVA UUID as primary key 【发布时间】:2018-03-02 14:36:56 【问题描述】:将 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 版本。
【问题讨论】:
【参考方案1】:H2 数据库在 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 内存数据库错误“数据转换错误转换”的主要内容,如果未能解决你的问题,请参考以下文章
在 H2 数据库引擎中为 UUID 类型的主键列指定默认值?