Как указать точность Double в спящем режиме? - PullRequest
30 голосов
/ 02 ноября 2010

Я пытаюсь создать таблицу из спящих аннотаций. Мне нужно иметь столбец типа Double с длиной, указанной как: (10,2). Таким образом, синтаксис SQL выглядит так:

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

Я пытался сделать это:

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

но когда я смотрю на мою созданную таблицу, не указывается длина для столбца Double. Есть ли у hibernate решение для этого или необходимо вручную изменить конфигурацию таблицы?

Спасибо!

Ответы [ 4 ]

72 голосов
/ 03 ноября 2010

Элемент length аннотации Column применяется только в случае использования столбца со строковым значением . В вашем случае вы должны использовать элементы precision и scale.

@Column(precision=10, scale=2)

Вот что о них пишет спецификация:

  • int - precision - (Необязательно) Точность десятичной дроби (точная числовой) столбец. (Применяется только если используется десятичный столбец.)
  • int - scale - (Необязательно) Шкала для десятичной дроби (точная цифра) колонка. (Применяется только если десятичная дробь используется столбец.)

Ссылки

  • JPA 1.0 Технические характеристики
    • Раздел 9.1.5 «Аннотация колонки»
14 голосов
/ 25 мая 2012
@Column(name="Price", columnDefinition="Decimal(10,2) default '100.00'")

Установка значений по умолчанию для столбцов в JPA

3 голосов
/ 20 февраля 2017

Вы также можете использовать @Digits из API валидатора гибернации, который реализует стандарт проверки bean-компонентов javax.validation

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

Из Javadocs

Аннотированный элемент должен быть числом в пределах допустимого диапазона. Поддерживается Типы:

  • BigDecimal
  • BigInteger
  • CharSequence
  • BigInteger
  • байт, короткий, int, long и соответствующие им типы оберток

нулевые элементы считаются действительными

0 голосов
/ 25 июля 2018

Использование @ Тип (только в Hibernate):

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

приведет к определению (PostgreSQL, Oracle):

similarity numeric(5, 4),
similarity number(5, 4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...