java—使用jpa将uuid存储为mysql中的字符串

ldioqlga  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(459)

我在博客上看到了一篇关于将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ôáß恩¹º}åñ s。但是我希望它是可读的uuid,所以我使用了下面的代码,这对我没有帮助

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

如何将uuid保存为字符串而不是二进制(16)而不更改java类型uuid

jpfvwuh4

jpfvwuh41#

只是使用 @org.hibernate.annotations.Type(type="uuid-char") 数据类型有三个级别:
-java类型
-冬眠的类型
-数据库特定类型。
hibernate数据类型表示是java数据类型和独立于数据库的数据库类型之间的桥梁。
你可以检查这个Map。你可以在那里找到 java.util.UUID 可以Map到不同的类型(二进制或char/varchar)。 uuid-binary 是hibernate的uuidbinarytype的键,默认情况下您将获得此类型,并且它将被Map到 BINARY 你的数据库。
如果你想在你的uuid下得到char类型,你应该向hibernate解释你想要他的 UUIDCharType . 你用的是什么 uuid-char 键,您可以签入@type annotation的javadoc: Defines a Hibernate type mapping. . 所以,您可以使用注解来解释hibernate应该使用哪个桥。

相关问题