Sun*_*Rao 3 java mysql uuid hibernate spring-data-jpa
我遇到了一个使用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;
Run Code Online (Sandbox Code Playgroud)
结果就是"áaáßEN¹º}ÅÑs.但我希望它作为可读UUID,所以我使用以下代码,但没有帮助我
@Id
@GeneratedValue( generator = "uuid2" )
@GenericGenerator( name = "uuid2", strategy = "uuid2" )
@Column( name = "id", columnDefinition = "CHAR(32)" )
private UUID id;
Run Code Online (Sandbox Code Playgroud)
如何在不更改java类型UUID的情况下将UUID保存为字符串而不是二进制(16)
Iva*_*pov 13
只是用
@org.hibernate.annotations.Type(type="uuid-char")
有三种级别的数据类型:
- Java类型
- Hibernate的类型
- 数据库特定类型.
Hibernate数据类型表示是Java数据类型和数据库类型之间的桥梁,它独立于数据库.
您可以检查此映射.如您java.util.UUID所见,可以映射到不同的类型(二进制或char/varchar).uuid-binary是hibernate的UUIDBinaryType的关键,默认情况下你会得到这个类型,它将被映射到BINARY你的数据库.
如果你想在你的UUID下获得CHAR类型,你应该向hibernate解释你想要他的UUIDCharType.要做到这一点,你可以使用uuid-char密钥,因为你可以检查@Dode注释的JavaDoc : Defines a Hibernate type mapping.. 所以,你使用注释来解释hibernate它应该使用哪个桥.
@Type 注解已被弃用,在 Spring Boot 的最新版本中甚至不存在。
您现在需要使用@JdbcTypeCode
正确的方法如下
@Column(columnDefinition = "VARCHAR(36)")
@JdbcTypeCode(SqlTypes.VARCHAR)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4272 次 |
| 最近记录: |