How to specify Double's precision on hibernate?

后端 未结 4 687
温柔的废话
温柔的废话 2020-12-08 03:01

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:



        
相关标签:
4条回答
  • 2020-12-08 03:15

    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

    0 讨论(0)
  • 2020-12-08 03:17
    @Column(name="Price", columnDefinition="Decimal(10,2) default '100.00'")
    

    Setting default values for columns in JPA

    0 讨论(0)
  • 2020-12-08 03:21

    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.)

    References

    • JPA 1.0 Specification
      • Section 9.1.5 "Column Annotation"
    0 讨论(0)
  • 2020-12-08 03:27

    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)
    
    0 讨论(0)
提交回复
热议问题