Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NHibernate 3.0 rounding a decimal to 5 decimal places - why?

All,

We were using NHiberate 2.1 where we are storing decimal values (exchange rates) e.g. 123.1234567 to 7 decimal places

We are mapping the type using default mapping style:

<property name="ExchangeRate"  not-null="true" />

However when we upgrade to NHibernate 3.0 the value above is saved as 123.1234500.

It does not specify this change in behaviour in the 3.0 release notes although it does seem to detail that in issue [NH-1594], the default value for decimal is DECIMAL(19,5)

We have a solution i.e. specify the following mapping:

<property name="ExchangeRate"  type="decimal(10,7) not-null="true" />

I need to know is this solution the right way to solve this issue? Also, why is there a functional change in behaviour with rounding between 2.1 and 3.0?

Cheers,

Billy Stack

like image 850
bstack Avatar asked Mar 09 '11 09:03

bstack


1 Answers

That works, but this is cleaner IMO:

<property name="ExchangeRate" precision="10" scale="7" />

A not-null decimal is implied by the property type.

like image 109
Diego Mijelshon Avatar answered Oct 29 '22 17:10

Diego Mijelshon