2011-03-09 7 views
7

全て、小数点以下5桁まで切り上げるNHibernate 3.0 - なぜですか?

私たちは10進数値(換算レート)を格納しているところで、NHiberate 2.1を使用していました。 123.1234567 7に小数点以下の桁数

私たちは、デフォルトのマッピングスタイルを使用してタイプをマッピングしている:我々はNHibernateの3.0にアップグレードするとき

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

は、しかし、上記の値が123.1234500として保存されます。

それは3.0のリリース、問題[NH-1594]で、小数点以下のデフォルト値はDECIMAL(19.5)であることを詳細に思えるんが、ノートでの動作でこの変更を指定していない

我々は持っていますソリューションすなわち、以下のマッピングを指定します。私が知っている必要があり

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

は、このソリューションは、この問題を解決するための正しい方法ですか? また、2.1と3.0の間の丸めによる動作の機能的な変更はなぜですか?

乾杯、動作しますが、これはクリーンIMOある

ビリー・スタック

+0

データベース設計のためではないと確信していますか? 3.0を試すときに同じデータベーススキーマを使用していますか? – jishi

+0

申し訳ありませんが、type = "decimal(14,7) – bstack

+0

はい、まったく同じデータベースデザインです。以前のバージョンのNHibernateに戻っても問題はありません – bstack

答えて

9

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

A-nullでない小数は、プロパティのタイプによって暗示されます。

+0

正直。おかげさまでありがとうございます。 – bstack

+0

私の質問では、なぜNH3で5桁の小数点以下を四捨五入したのですが、NH2.1ではこれをしませんでした... – bstack

+2

@bstackそれはあなたの疑問ですとにかく、正確な数値型は決定論的なものでなければならないので、文書化されていないデフォルトを信頼するよりも明示的な方が良いです。 –

関連する問題