猿问

在PostgreSQL上休眠模式的生成:列类型为UUID而不是INET的错误

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


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


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


在实体中,我使用特定TypeDef于休眠的方式注册custom UserType,并用ip值列进行注释,Type如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?


休眠版本为5.2.17.Final。


慕码人2483693
浏览 186回答 1
1回答

有只小跳蛙

只需@Column对columnDefinition参数使用批注,例如:@Column(columnDefinition = "inet")
随时随地看视频慕课网APP

相关分类

Java
我要回答