java - Oracle Hibernate 映射 - NUMBER(4,0)

标签 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

最佳答案

在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 端列的预期定义是什么。

关于java - Oracle Hibernate 映射 - NUMBER(4,0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17784317/

相关文章:

java - @SecondaryTable 注释不适用于不同架构中的相同表名

java - java应用程序中如何存储数据?

java - 是否可以在 jdom 中搜索属性?

java - 从 4.2.7/4.3.0.CR1 开始,Hibernate JPA OneToOne 孤立删除仍然不起作用

sql - 规范化 ORACLE 11g 中的列名

apache - Oracle + NiFi => 所有字段转换为字符串

sql - 考虑行之间的 "difference"对行进行分组

java - JDBC CallableStatement 和 Oracle SYS_REFCURSOR IN 参数?

java - JSF 富 :dataList rendered per row?

java - 在 spring 应用程序中注入(inject) 2(不久的将来 3)个不同的 entityManagerFactory(或 entityManager)