Округление до 2 знаков после запятой в спящем языке запросов

1

Привет, кто-нибудь может мне помочь, как округлить до 2 десятичных знаков в hql?
Я ничего не могу найти в Интернете. Ниже мой запрос:

Select p.amount as amt,p.desc from pay p, register r where r.type=?1 and r.code=?2;

Я был бы рад, если кто-то может помочь в этом.

Используемая технология: hibernate, spring, java, primefaces 4.0, база данных oracle

  • 4
    пытались ли вы select round(p.amount, 2) as amt, ... основном вы также можете использовать функции sql в hql, в зависимости от того, какую базу данных вы используете
  • 0
    stackoverflow.com/questions/9992384/...
Показать ещё 1 комментарий
Теги:
hibernate
hql

3 ответа

1

Я много боролся с этим, наконец нашел следующее решение:

Если вы хотите быть более независимым от БД и специально хотите поддерживать Postgres или Oracle DB, вы можете использовать функцию наполовину для округления, которая довольно универсальна и не оставляет много места для разных реализаций, то есть это, вероятно, будет работать со всеми базами данных (проверено с помощью Postgres и MySQL).

Фрагмент выполняет округление до двух цифр и раундов по абсолютной величине. Вы можете легко адаптировать это к вашим потребностям.

Рассчитайте деление на 100, используя 100.0. Это гарантирует, что вы всегда получите двойной результат, что особенно важно, если вы построите сумму по округленным значениям.

floor(abs(value) * 100 + 0.5)/100.0 * sign(value)
0

Это сработало для меня

cast(value as decimal(9,2))
0

используйте функцию FORMAT по свойству до 2 десятичной точки

Select FORMAT(p.amount,2) as amt,p.desc from pay p, register r where r.type=?1 and r.code=?2;

в качестве альтернативы вы можете указать то же самое в файле сопоставления, как и ниже

 <property name="amount">
        <column name="amount" scale="15" precision="3" sql-type="number(15,2)"/>
    </property>
  • 0
    Я пробую оба. Это не работает!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню