gpt4 book ai didi

java - 使用JPA将UUID作为字符串存储在mysql中

转载 作者:搜寻专家 更新时间:2023-11-01 04:07:21 26 4
gpt4 key购买 nike

我偶然发现了一个将 UUID 与 Hibernate 和 MySql 结合使用的博客。现在的问题是,每当我查看数据库时,ID 都将是不可读格式 (binary-16)。如何将 UUID 存储为可读格式,例如 7feb24af-fc38-44de-bc38-04defc3804fe 而不是 ¡7ôáßEN¹º}ÅÑ s

我正在使用这段代码

@Id
@GeneratedValue( generator = "uuid2" )
@GenericGenerator( name = "uuid2", strategy = "uuid2" )
@Column( name = "id", columnDefinition = "BINARY(16)" )
private UUID id;

结果是 ¡7ôáßEN¹º}ÅÑ s。但我希望它是可读的 UUID,所以我使用了以下对我没有帮助的代码

@Id
@GeneratedValue( generator = "uuid2" )
@GenericGenerator( name = "uuid2", strategy = "uuid2" )
@Column( name = "id", columnDefinition = "CHAR(32)" )
private UUID id;

如何在不改变java类型UUID的情况下将UUID保存为字符串而不是binary(16)

最佳答案

只需使用@org.hibernate.annotations.Type(type="uuid-char")

数据类型分为三个层次:
- Java 类型
- Hibernate 的类型
- 数据库特定类型。

Hibernate 数据类型表示是Java 数据类型和数据库类型之间的桥梁,以独立于数据库。

你可以查看这个mappings .如您所见,java.util.UUID 可以映射到不同的类型(二进制或 char/varchar)。 uuid-binary 是 hibernate 的 UUIDBinaryType 的关键,您默认获得此类型,它将映射到数据库的 BINARY

如果你想在你的UUID下得到CHAR类型,你应该向hibernate说明你想要他的UUIDCharType。为此,您可以使用 uuid-char 键,您可以查看 @Type 注释的 JavaDoc:Defines a Hibernate type mapping.。因此,您使用注释来解释 hibernate 它应该使用哪个桥。

关于java - 使用JPA将UUID作为字符串存储在mysql中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50003906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com