java - 由 : org. h2.jdbc.JdbcSQLDataException 引起:十六进制字符串包含非十六进制字符

标签 java spring jpa jdbc

我正在尝试使用内存数据库编写测试。
我写了一个 sql 来清理数据并将数据存储到 DB。但我有一个异常(exception):

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

最佳答案

使用 spring.datasource.url=jdbc:h2:mem:testdb;MODE=MYSQL 为我修复了它。

或者向 UUID 字段添加注释 @Type 应该可以解决问题:

@Id
@Type(type="uuid-char")
private UUID user_id;

关于java - 由 : org. h2.jdbc.JdbcSQLDataException 引起:十六进制字符串包含非十六进制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57591764/

相关文章:

java - Intellij IDEA 的自定义插件可以在其代码中使用 DI 吗?

java - 在 Java 中避免依赖 hell 的首选步骤是什么?

java - 使用 Spring REST 上传图像

java - 静态资源(图片)Tomcat或Nginx服务器

java - 有没有办法避免 HibernateOptimisticLockingFailureException?

java - Spring/JPA/persistence实体属性字段不能是final的?

java - 在面板中使用图像

java - Spring中如何传递多个请求参数?

java - TreeMap 内的顺序错误

java - spring文件下载 Controller 中返回类型的意义