使用jpa限制数字列的长度

时间:2017-09-06 12:25:38

标签: java oracle jpa

我想在oracle中生成一个列(abc NUMBER(2))(目前):

@Column(length = 2)
private Integer abc;

但仍在Oracle中,创建的列为abc NUMBER(10, 0)

我试过@Digits(integer=2, fraction=0)但我认为这不会起作用,因为Java类型是Integer

@Digit的Java文档说:

  

带注释的元素必须是可接受范围内的数字   类型是:

BigDecimal
BigInteger
String
byte, short, int, long, and their respective wrapper types
     

null元素被认为是有效的

@Digits(integer=2, fraction=0)对生成的列没有影响。

我正在寻找一种通用的解决方案,也可以在MySQL上运行。

1 个答案:

答案 0 :(得分:2)

您可以尝试 java-sql 数据类型映射

获得的精度
@Column
private Short weightedScore;

还尝试BigDecimal指定precisionscale

@Column(precision = 2, scale = 0)
private BigDecimal weightedScore;

恕我直言BigDecimal precision与Oracle NUMBER(precision)完美匹配。

使用precision属性,即

@Column(precision=2)
private Integer abc;

我希望它会生成一些DDL,例如NUMBER(2,0)

参见How to specify Double's precision on hibernate?