PostgreSQL 上的 Hibernate 模式生成:错误的列类型 UUID 而不是 INET

Hibernate schema generation on PostgreSQL: wrong column type UUID instead of INET

我依赖休眠模式生成作为工作流程的一部分,因为每次提交对模型的更改都相当大。我使用生成的模式来完成用于测试环境的脚本。

正在使用的数据库是PostgreSQL。我正在为其中一列使用自定义 postgres 类型 INET(我同时保留 IPv4 和 IPv6 值。我需要它提供的类型检查。)

为此,我使用了自定义休眠 UserType (InetAddressType.java.)

在实体中,我使用休眠特定 TypeDef 注册自定义 UserType,并使用 Type 注释 ip 值列,如 Lamp.java

@Entity
@TypeDef(name = "inet", typeClass = InetAddressType.class)
public class Lamp {
    @Type(type = "inet")
    public InetAddress getIpAddress() {
        return ipAddress;
    }

自定义用户类型适用于从休眠外部生成的模式。然而,当涉及到自动生成时,hibernate 决定正确的类型是 UUID:

create table lamp (id int8 not null, ip_address uuid, primary key (id))

有什么方法可以指示休眠使用 INET 而不是 UUID?

Hibernate 版本是 5.2.17.Final

只需使用带有 columnDefinition 参数的 @Column 注释,例如:

@Column(columnDefinition = "inet")