Подтвердить что ты не робот

Как указать двойную точность в спящем режиме?

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

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

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

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

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

Спасибо!

4b9b3361

Ответ 1

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

@Column(precision=10, scale=2)

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

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

Ссылки

  • Спецификация JPA 1.0
    • Раздел 9.1.5 "Обозначение столбца"

Ответ 3

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

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

Из Javadocs

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

  • BigDecimal
  • BigInteger
  • CharSequence
  • BigInteger
  • byte, short, int, long и их соответствующие типы оберток

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