JPA不返回MySQL varbinary字段的UUID“Text”值

时间:2014-08-15 01:09:18

标签: java mysql hibernate jpa uuid

我在MySQL中有一个varbinary(36)字段,用于存储UUID。然后我点击MySQL工作台中的字段,我可以看到字段的文本值为“4479633f-a7e5-4ea9-945c-589263022634”。我在我的代码中使用JPA,当我在JPA中执行SELECT U FROM USER时,它将值变为“66653565373765302D663832312D313165332D613361632D303830303230306339613636”,这是该值的十六进制等效值。如何让JPA返回字段的Text值。

以下是我在代码中对该字段的定义:

@Id
@Column(name = "COUNTRY_ID")
private String countryId; 

1 个答案:

答案 0 :(得分:2)

UUID type is better stored as BINARY(16),根据Hibernate Types,您可以同时使用二进制或字符表示。

@Column(columnDefinition = "BINARY(16)")
private UUID uuid;

对于String表示,您需要一个CHAR(32)列

@Column(columnDefinition = "CHAR(32)")
private String uuidHex;