在经历了以前的开发工作的代码折磨之后,我意识到我需要移动所有基于资金的列,以不使用浮点数学。在Java方面,这意味着使用BigDecimal,但在使用Hibernate / JPA和MySQL 5时,适合该列的MySQL数据类型是什么?
十进制和数字。
对于DECIMAL和NUMERIC类型,建议的Java映射是java.math.BigDecimal。java.math.BigDecimal类型提供数学运算,以允许与其他BigDecimal类型,整数类型和浮点类型相加,相减,相乘和除以BigDecimal类型。 建议检索DECIMAL和NUMERIC值的方法是ResultSet.getBigDecimal。JDBC还允许以简单的字符串或char数组的形式访问这些SQL类型。因此,Java程序员可以使用getString接收DECIMAL或NUMERIC结果。但是,这使得将DECIMAL或NUMERIC用作货币值的情况比较尴尬,因为这意味着应用程序编写者必须对字符串执行数学运算。也可以将这些SQL类型检索为任何Java数字类型。
对于DECIMAL和NUMERIC类型,建议的Java映射是java.math.BigDecimal。java.math.BigDecimal类型提供数学运算,以允许与其他BigDecimal类型,整数类型和浮点类型相加,相减,相乘和除以BigDecimal类型。
建议检索DECIMAL和NUMERIC值的方法是ResultSet.getBigDecimal。JDBC还允许以简单的字符串或char数组的形式访问这些SQL类型。因此,Java程序员可以使用getString接收DECIMAL或NUMERIC结果。但是,这使得将DECIMAL或NUMERIC用作货币值的情况比较尴尬,因为这意味着应用程序编写者必须对字符串执行数学运算。也可以将这些SQL类型检索为任何Java数字类型。
看看这里了解更多详情。