我在博客上看到了一篇关于将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
1条答案
按热度按时间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应该使用哪个桥。