代码之家  ›  专栏  ›  技术社区  ›  artaxerxe

如何在hibernate上指定Double的精度?

  •  28
  • artaxerxe  · 技术社区  · 14 年前

    我试图从hibernate注释创建一个表。我需要一个双类型的列,其长度指定为:(10,2)。 所以SQL语法显示如下:

    ... DOUBLE(10,2) ....
    

    我试过这样做:

    @Column(length = 10, precision = 2) ...
    

    但是当我查看创建的表时,它没有指定Double column的长度。hibernate是否有解决方案,或者是否需要手动更改表配置?

    4 回复  |  直到 14 年前
        1
  •  77
  •   Pascal Thivent    14 年前

    这个 length 列注释的元素 . 在你的情况下,你应该使用 precision scale 元素。

    @Column(precision=10, scale=2)
    

    以下是规范中对它们的描述:

    • int 精度 -(可选)小数点的精度(精确 数值)列。(仅适用于
    • 整数 - 规模 -(可选)小数位数(精确数字) 列。(仅当小数点时适用

    工具书类

    • JPA 1.0规范
        2
  •  18
  •   Community CDub    8 年前
    @Column(name="Price", columnDefinition="Decimal(10,2) default '100.00'")
    

    Setting default values for columns in JPA

        3
  •  3
  •   FearlessHyena    8 年前

    你也可以使用 @Digits

    @Digits(integer = 10 /*precision*/, fraction = 2 /*scale*/)
    

    来自Javadocs

    带批注的元素必须是支持的可接受范围内的数字 类型包括:

    • 大十进制
    • 字符序列
    • 字节,短,整数, long和它们各自的包装类型

    空元素被认为是有效的

        4
  •  0
  •   zeratul021    6 年前

    使用 @类型 (仅在休眠状态下):

    @Column(precision = 5, scale = 4)
    @Type(type = "big_decimal")
    private double similarity;
    

    similarity numeric(5, 4),
    similarity number(5, 4)