如何使用Hibernate保留PRICE信息

时间:2017-03-06 19:22:16

标签: java sql hibernate

在SQL中,通常的做法是将金额存储在DECIMAL(10,2)类型的列中。但是,当谈到Hibernate映射时,我希望避免将值映射到浮点数。有没有办法将列映射到包含分数的整数?

1 个答案:

答案 0 :(得分:2)

使用小数(10,2)作为钱的做法很糟糕。 此外,使用浮动值换钱的做法是一种猴子技术(例如,只有猴子会认为存储具有非精确浮点数的固定点值是有意义的。)

相反,确定您需要存储的最小货币价值,例如1/1000欧元,并将货币存储为该值的整数倍。 继续这个例子,货币栏中的价值2.57欧元将由2570表示。

应始终使用整数值执行货币数学。

旁注:

猴子证明:

float value1 = .1;
float value2 = .2;
float value3 = value1 + value2;

if (value3 == .3)
    printf ("m1. you are not a monkey");
else
    printf ("m2. you are a monkey.  learn something about floating point representation");

消息m1永远不会显示