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")
我依赖休眠模式生成作为工作流程的一部分,因为每次提交对模型的更改都相当大。我使用生成的模式来完成用于测试环境的脚本。
正在使用的数据库是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")