相关疑难解决方法(0)

Java Hibernate和SQL Server中UUID的不同表示

我正在尝试UUID使用Hibernate将POJO中的列映射到SQL Server表列.

注释应用如下:

@Id
@GeneratedValue
@Column(name = "Id", columnDefinition = "uniqueidentifier") 
public UUID getId(){ ... }
Run Code Online (Sandbox Code Playgroud)

但是,似乎Java Hibernate映射和SQL服务器之间存在一些字节序问题.

例如,在我的Java应用程序中,我将id表示为:

4375CF8E-DEF5-43F6-92F3-074D34A4CE35
ADE3DAF8-A62B-4CE2-9D8C-B4E4A54E3DA1
Run Code Online (Sandbox Code Playgroud)

而在SQL Server中,这些表示为:

8ECF7543-F5DE-F643-92F3-074D34A4CE35
F8DAE3AD-2BA6-E24C-9D8C-B4E4A54E3DA1
Run Code Online (Sandbox Code Playgroud)

有没有办法在双方都有相同的代表?

请注意,uniqueidentifier它仅用于uniqueidentifier在SQL Server中具有类型ID而不是类型binary; 当存在同样的问题uniqueidentifier,从注释移除(可观察到该问题通过转换binaryuniqueidentifier).

java sql-server hibernate

14
推荐指数
3
解决办法
6625
查看次数

引起:org.h2.jdbc.JdbcSQLDataException: Hexadecimal string contains non-hex character

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

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]
Run Code Online (Sandbox Code Playgroud)

我的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');
Run Code Online (Sandbox Code Playgroud)

我的 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
Run Code Online (Sandbox Code Playgroud)

java spring jpa jdbc

6
推荐指数
3
解决办法
6651
查看次数

如何使用Hibernate JPA 2以二进制形式存储uuid

我有一个关于通过休眠持久性(JPA2)以二进制形式在数据库中的字符串uuid的问题。我现在正在使用此代码:

private UUID id;

@Id
@Type(type="uuid-char")
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(length = 32, unique = true, nullable = false)
public final UUID getId() {
    return id;
}
Run Code Online (Sandbox Code Playgroud)

这项工作正常,但我必须以二进制形式存储它。不要问我为什么,但是我必须。

java binary uuid hibernate jpa-2.0

5
推荐指数
1
解决办法
6119
查看次数

标签 统计

java ×3

hibernate ×2

binary ×1

jdbc ×1

jpa ×1

jpa-2.0 ×1

spring ×1

sql-server ×1

uuid ×1