我想在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

  
  空元素被视为有效


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

我正在寻找一种通用解决方案,它也可以在MySQL上工作。

最佳答案

您可以尝试通过java-sql数据类型映射获得的精度

@Column
private Short weightedScore;


还尝试BigDecimal指定precisionscale

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


IMHO BigDecimal precision与Oracle NUMBER(precision)的映射非常好。

使用precision属性,即

@Column(precision=2)
private Integer abc;


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

How to specify Double's precision on hibernate?

关于java - 使用jpa限制数字列的长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46075191/

10-11 16:22