java - 使用jpa限制数字列的长度

标签 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 文档说:

The annotated element must be a number within accepted range Supported types are:

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

null elements are considered valid

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

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

最佳答案

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

@Column
private Short weightedScore;

还可以尝试使用BigDecimal指定精度scale

@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?

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

相关文章:

Java - 在 java.security 中锁定 TLS 版本,但允许通过启动配置覆盖每个应用程序?

java - AES-256 和 PKCS7Padding 在 Java 中失败

java - 我们可以使用javassist创建实例对象而不使用反射吗?

c# - 事务范围因 Oracle : Connection is already part of a local or a distributed transaction 中的 BeginTransaction 而失败

java - 结果集 - 游标 : rs. next() 花费大量时间

java - 使用@OrderColumn 的JPA 多重获取返回多个空值

java - @PreUpdate 更新时不保存父对象

java - 当最外层元素具有 xmlns 属性时,如何在camel中使用xpath?

sql - Oracle SQL 查询列出两个日期之间的周数

java - 使用 createNativeQuery 调用 Oracle 存储过程