不兼容的类型:numeric和bigint。在PostgreSQL中

时间:2017-07-19 07:52:46

标签: sql oracle postgresql hibernate jpa

迁移到postgresql时,我面临以下问题

关键列veh_reg_authorityid属于不兼容的类型:numericbigint。 以下是映射:

@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

1 个答案:

答案 0 :(得分:0)

如果要定义外键约束,则应对两列使用相同的数据类型。

如果您的应用程序在Oracle中使用两列的数据类型NUMBER正常工作,那么如果对{2}使用numeric,为什么它在PostgreSQL中不起作用?这些数据类型具有可比性。