【发布时间】:2019-12-26 17:46:44
【问题描述】:
我正在尝试使用内存数据库编写测试。 我写了一个 sql 来清理数据并将其存储到数据库。但我有一个例外:
Caused by: org.h2.jdbc.JdbcSQLDataException: Hexadecimal string contains non-hex character: "e7485042-b46b-11e9-986a-b74e614de0b0"; SQL statement:
insert into users (user_id, name, created_on, modified_on) values ('e7485042-b46b-11e9-986a-b74e614de0b0', 'Ann', null, null) -- ('e7485042-b46b-11e9-986a-b74e614de0b0', 'Ann', NULL, NULL) [90004-199]
我的 sql:
insert into users (user_id, name, created_on, modified_on) values ('e7485042-b46b-11e9-986a-b74e614de0b0', 'Ann', null, null);
insert into product(product_id, name, created_on, modified_on) VALUES ('f3a775de-b46b-11e9-95e4-af440b6044e6', 'product1', '2019-08-01 17:51:51.000000', '2019-08-01 17:51:51.000000');
insert into products_users(user_id, product_id) VALUES ('e7485042-b46b-11e9-986a-b74e614de0b0', 'f3a775de-b46b-11e9-95e4-af440b6044e6');
我的 application.properties:
spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
【问题讨论】:
-
尝试从 UUID 字符串值中删除连字符。
-
user_id的数据类型是什么? -
@MarkRotteveel, uuid
-
@GordThompson,然后我得到 MethodArgumentTypeMismatchException:无法将类型“java.lang.String”的值转换为所需类型“java.util.UUID”;嵌套异常是 java.lang.IllegalArgumentException: Invalid UUID string: e7485042b46b11e9986ab74e614de0b0
-
删除连字符意味着您最终会得到一个不遵守 UUID 格式约定的字符串。从二进制格式重新转换为有效的 UUID 会导致类型不匹配。