I try to create a table from hibernate annotations. I need to have a column of Double type, with the length specified like : (10,2). So SQL syntax show like:
You can also use @Digits
from the hibernate validator API which implements the javax.validation Bean Validation standard
@Digits(integer = 10 /*precision*/, fraction = 2 /*scale*/)
From the Javadocs
The annotated element must be a number within accepted range Supported types are:
- BigDecimal
- BigInteger
- CharSequence
- BigInteger
- byte, short, int, long, and their respective wrapper types
null elements are considered valid
@Column(name="Price", columnDefinition="Decimal(10,2) default '100.00'")
Setting default values for columns in JPA
The length
element of the Column annotation applies only if a string-valued column is used. In your case, you should use the precision
and the scale
elements.
@Column(precision=10, scale=2)
Here is what the specification writes about them:
int
-precision
- (Optional) The precision for a decimal (exact numeric) column. (Applies only if a decimal column is used.)int
-scale
- (Optional) The scale for a decimal (exact numeric) column. (Applies only if a decimal column is used.)
Use @Type (only in Hibernate):
@Column(precision = 5, scale = 4)
@Type(type = "big_decimal")
private double similarity;
Will result in definition (PostgreSQL, Oracle):
similarity numeric(5, 4),
similarity number(5, 4)