当前位置: 首页 > 面试题库 >

使用JPA在MySQL中将UUID存储为字符串

子车灿
2023-03-14
问题内容

我遇到了一个在Hibernate和MySql中使用UUID的博客。现在的问题是,每当我查看数据库时,ID的格式都是不可读的(二进制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保存为字符串而不是二进制(16)


问题答案:

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

数据类型分为三个级别:
-Java类型
-Hibernate类型
-数据库特定类型。


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

您可以检查此映射。如您java.util.UUID所见,可以将其映射到不同的类型(二进制或char
/ varchar)。uuid- binary是Hibernate的UUIDBinaryType的关键,默认情况下会获得此类型,它将映射到BINARY您的数据库。

如果要在UUID下获取CHAR类型,则应说明以hibernate方式进入hibernate状态UUIDCharType。为此,您可以使用uuid- charkey,并且可以检入@Type批注的JavaDoc :Defines a Hibernate type mapping.。因此,您可以使用注释来解释hibernate模式,它应该使用哪个桥接。



 类似资料:
  • 问题内容: 根据此处找到的功能,我正在使用PHP生成UUID 现在,我想将其存储在MySQL数据库中。存储UUID v4的最佳/最有效的MySQL字段格式是什么? 我目前有varchar(256),但我可以肯定它比所需的要大得多。我已经找到了很多几乎可以回答的内容,但是对于它们所指的UUID形式,它们通常是模棱两可的,所以我要询问特定的格式。 问题答案: 将其存储起来,好像您希望完全适合它一样,或

  • 问题内容: 这是将UUID()生成的MySQL GUID / UUID转换为二进制文件(16)的最佳方法: 然后将其存储在BINARY(16)中 我应该知道以这种方式进行操作有什么影响? 问题答案: 含义不多。它会稍微减慢查询速度,但是您几乎不会注意到它。 无论如何都存储为内部。 如果要将二进制文件加载到客户端中并在客户端进行解析,请注意,它可能具有除initial之外的其他字符串表示形式。 的函

  • 我发现这个问题与不同的编程语言或不同的数据库有关 我正在尝试创建一个门户来生成多项选择查询,前端将发送给我一个巨大的json在某些时候会有一个问题对象数组每个对象应该有: 问题 正确答案 错误答案列表 ( 最少 2 最多 4 ) 课程特定对象的 ID... 我需要(如果可能的话)在postgresql数据库的单个记录中存储错误答案(字符串)列表 这是我的课 这正是我有一些疑问的地方(让我们暂时跳过

  • 问题内容: 谁能告诉我如何将Java Date存储到Mysql datetime …? 当我尝试这样做时…仅日期存储并且像这样在Mysql日期存储中保留时间00:00:00 … 我不仅要约会,而且要时间… 我正在将JPA(Hibernate)与Spring mydomain类一起使用java.util.Date,但我已经使用手写查询创建了表… 这是我的创建声明 问题答案: 见链接: http://

  • 我想在Cloud Spanner中使用UUID作为主键。读写UUID的最佳方式是什么?是否有UUID类型或客户端库支持?

  • 问题内容: 我试图在使用UUID作为主键的PostgreSQL中保留一个实体。我尝试将其持久保存为普通的UUID: 有了以上,我得到这个错误: 我也尝试将UUID保留为byte []无济于事: 如果删除@Lob,我得到的错误与上面发布的错误相同。但是使用@Lob时,错误会稍微更改为: 无法完成如此简单的操作,我感到非常难过! 我正在将Hibernate 4.1.3.Final与PostgreSQL