Oracle Hibernate映射 - NUMBER(4,0)

时间:2013-07-22 09:43:37

标签: java hibernate oracle11g

我有一个列的id为NUMBER(4,0).我尝试使用Integer,Short,BigDecimal和BigInt作为id实例变量的类型。 我得到了不同的错误,表明使用的类型不正确。

我正在使用Oracle 11g

Wrong column type in MyDatabase.schema for column id. Found: number, expected: smallint

1 个答案:

答案 0 :(得分:1)

在oracle中NUMBER(4,0)表示总数为4的数字。

在java类型中,不完全相同的原始数据类型...最近的数据类型是:

  • 字节:-128到127(3位)
  • 短:-32,768到32,767(5位数)

在这种情况下,我建议使用较小的一个(字节),以避免在java端溢出oracle变量限制。

所以hibernate列定义如下所示:

@Column(name = "NFOURCOL", columnDefinition = "NUMBER(4,0)")
public Byte getNfour() {
  return nfour;
}

columnDefinition = "NUMBER(4,0)"部分可以解决问题,它告诉hibernate在oracle端预期的列定义是什么。