我想在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
指定precision
和scale
@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/