Reputation: 6411
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:
... DOUBLE(10,2) ....
I have tried to do that:
@Column(length = 10, precision = 2) ...
but when i look at my created table, it is not specified the length for Double column. Does hibernate has solution for that or is it necessary to alter table configuration by hand?
Thanks!
Upvotes: 48
Views: 144916
Reputation: 2694
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)
Upvotes: 5
Reputation: 4065
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
Upvotes: 5
Reputation: 993
@Column(name="Price", columnDefinition="Decimal(10,2) default '100.00'")
Setting default values for columns in JPA
Upvotes: 30
Reputation: 570325
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.)
Upvotes: 104