art*_*rxe 31 java hibernate jpa
我尝试从hibernate注释创建一个表.我需要一个Double类型的列,其长度指定为:(10,2).所以SQL语法显示如下:
... DOUBLE(10,2) ....
Run Code Online (Sandbox Code Playgroud)
我试过这样做:
@Column(length = 10, precision = 2) ...
Run Code Online (Sandbox Code Playgroud)
但是当我查看我创建的表时,没有指定Double列的长度.Hibernate是否有解决方案或是否需要手动更改表配置?
谢谢!
Pas*_*ent 73
仅当使用字符串值列length时,Column注释的元素才适用.在您的情况下,您应该使用precision和scale元素.
@Column(precision=10, scale=2)
Run Code Online (Sandbox Code Playgroud)
以下是规范对它们的描述:
int-precision- (可选)十进制(精确数字)列的精度.(仅在使用十进制列时适用.)int-scale- (可选)十进制(精确数字)列的刻度.(仅在使用十进制列时适用.)
Kri*_*ris 16
@Column(name="Price", columnDefinition="Decimal(10,2) default '100.00'")
Run Code Online (Sandbox Code Playgroud)
您还可以使用@Digits实现 javax.validation Bean 验证标准的 hibernate validator API
@Digits(integer = 10 /*precision*/, fraction = 2 /*scale*/)
Run Code Online (Sandbox Code Playgroud)
来自 Java 文档
注释的元素必须是可接受范围内的数字支持的类型有:
- 大十进制
- 大整数
- 字符序列
- 大整数
- byte、short、int、long 及其各自的包装类型
null 元素被认为是有效的
使用@Type(仅在Hibernate中):
@Column(precision = 5, scale = 4)
@Type(type = "big_decimal")
private double similarity;
Run Code Online (Sandbox Code Playgroud)
将导致定义(PostgreSQL、Oracle):
similarity numeric(5, 4),
similarity number(5, 4)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79284 次 |
| 最近记录: |