【发布时间】:2017-04-12 14:19:37
【问题描述】:
我正在使用 Spring Boot 1.4.1,其中包括 Hibernate 5 和 Postgres 9.6,我正在尝试创建一个具有 UUID ID 但使用 Postgres 的 UUID 生成而不是 Hibernate 的实体。许多类似的问题都说将列类型设置为pg-uuid。这似乎适用于非数据库生成的 ID 列,但是当我尝试将它用于 ID 列时,我得到了
org.hibernate.id.IdentifierGenerationException: unrecognized id type : pg-uuid -> java.util.UUID
所以看起来 Hibernate 正确地应用了类型,但没有转换它。
这是我的实体的 ID 列的设置方式:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@org.hibernate.annotations.Type(type="pg-uuid")
private UUID id;
并且表的设置类似于如下(已安装uuid-ossp)
create table example (
id UUID NOT NULL DEFAULT uuid_generate_v1mc(),
...
);
我希望让数据库生成 UUID,不想使用 Hibernate 的生成策略。有没有办法让它工作?
【问题讨论】:
-
有理由只使用数据库 UUID 吗?
-
便携性。有些记录不是通过 Hibernate 创建的。
标签: java postgresql hibernate jpa spring-boot