如何使用Hibernate 5.0将java UUID作为字节数组存储在Postgres中? 模型:
@Entity
@Table(name = "childs")
public class Child {
...
@Type(type = "pg-uuid")
private UUID parentId;
...
}
表:
CREATE TABLE childs (
...
parent_id BYTEA,
...
);
以前用Hibernate 4.3工作的一切都很好。升级到Hibernate 5.0后,我收到以下错误:
PSQLException: ERROR: column "parent_id" is of type bytea but expression is of type uuid
我检查了PostgresUUIDType
的源代码,发现在新版本的Hibernate中添加了以下内容:
@Override
protected boolean registerUnderJavaType() {
// register this type under UUID when it is added to the basic type registry
return true;
}
我尝试将模型中的字段类型更改为@Type(type = "uuid-binary")
,但仍然遇到相同的错误。 (将列类型更改为UUID
不是一种选择。)
任何帮助,将不胜感激。感谢。
答案 0 :(得分:0)
我发现解决此问题的最简单方法是将以下内容添加到package-info.java
包中的domain
(或任何需要的位置):
@TypeDef(name = "pg-uuid-binary", defaultForType = UUID.class, typeClass = UUIDBinaryType.class)
使用ph-uuid-binary
@Type(type = "pg-uuid-binary")
注释域名的字段。
对我而言,它似乎与uuid-binary
定义完全相同,但不知何故它不起作用。