Пройдя через предыдущую разработку кода, я понял, что мне нужно переместить все столбцы, основанные на деньгах, чтобы не использовать математику с плавающей запятой. На стороне Java это означает использование BigDecimal, но при использовании Hibernate/JPA и MySQL 5 какой тип данных MySQL будет подходящим для создания этого столбца?
Какой тип вы бы отобразили BigDecimal в Java/Hibernate в MySQL?
Ответы (1)
ДЕСЯТИЧНЫЙ и ЧИСЛОВОЙ.
Рекомендуемое сопоставление Java для типов DECIMAL и NUMERIC — java.math.BigDecimal. Тип java.math.BigDecimal предоставляет математические операции, позволяющие складывать, вычитать, умножать и делить типы BigDecimal с другими типами BigDecimal, целочисленными типами и типами с плавающей запятой.
Для получения значений DECIMAL и NUMERIC рекомендуется использовать метод ResultSet.getBigDecimal. JDBC также позволяет обращаться к этим типам SQL как к простым строкам или массивам символов. Таким образом, Java-программисты могут использовать getString для получения ДЕСЯТИЧНОГО или ЧИСЛОВОГО результата. Однако это делает общий случай, когда DECIMAL или NUMERIC используются для денежных значений, довольно неудобным, поскольку это означает, что авторы приложений должны выполнять математические операции со строками. Также возможно получить эти типы SQL как любые числовые типы Java.
Подробнее см. здесь. .