我依赖休眠模式生成作为工作流的一部分,因为每次提交对模型的更改都很大。我使用生成的模式来完成用于测试环境的脚本。
正在使用的数据库是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生成的架构很好地配合使用。但是,当涉及到自动生成时,hibernate会确定正确的类型为UUID
:
create table lamp (id int8 not null, ip_address uuid, primary key (id))
是否有任何方法来指示休眠模式使用INET而不是UUID?
休眠版本为5.2.17.Final
。
答案 0 :(得分:1)
只需将@Column
注释与columnDefinition
参数一起使用,例如:
@Column(columnDefinition = "inet")