迁移到postgresql时,我面临以下问题
关键列veh_reg_authority
和id
属于不兼容的类型:numeric
和bigint
。
以下是映射:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "VEH_REG_AUTHORITY", columnDefinition ="Numeric(12,0)")
private VehicleRegistrationAuthority vehicleRegistrationAuthority;
VehicleRegistrationAuthority
的{{1}}类型为id
,因此根据PostgreSQL转换为Long
。
所以一个简单的解决方案是相应地更改columnDefinition =“Numeric(12,0)”,但我们不能这样做,因为它适用于oracle和mysql,并且它已被大量使用在代码中,所以不可能变化
以下是Oracle,Mysql和PostgreSQL中的类型:
BIGINT
创建外键hibernate时会出现以下问题。
column java type Oracle Mysql PostgreSQL
id Long NUMBER BIGINT BIGINT
veh_reg_authority VehicleRegistrationAuthority NUMBER decimal(12,0) NUMERIC
答案 0 :(得分:0)
如果要定义外键约束,则应对两列使用相同的数据类型。
如果您的应用程序在Oracle中使用两列的数据类型NUMBER
正常工作,那么如果对{2}使用numeric
,为什么它在PostgreSQL中不起作用?这些数据类型具有可比性。