2013-06-30 27 views
0

我正在使用Scala的squeryl(版本0.9.6-RC1與scala 2.10)並嘗試序列化我的模型到H2數據庫。squeryl - 保存bigDecimal到數據庫

我的模型類有一些字符串字段和一些BigDecimal類型(scala.BigDecimal)。

我從我的模型類創建Schema.create數據庫架構,可惜的squeryl總是創建的BigDecimal太小領域,這給我留下了一個值太長列 "MULTPZ DECIMAL(20, 16) NOT NULL": "1000000.0000000000000000 (23)";

這是某種錯誤的squeryl?原始值爲"1000000.0000"並正確解析爲BigDecimal。

我測試過上述情況,我已經創建了現場一個單獨的表定義爲"DECIMAL(20, 20)"和squeryl試圖插入"1000000.00000000000000000000 (27)"

回答

3

最簡單的解決辦法是覆蓋您的架構的defaultSizeOfBigDecimal方法的情況下。它返回一個包含保存BigDecimal的數字列的長度和比例的元組。您還可以使用@Column註釋以每個字段爲基礎設置這些值。

+0

很好,這工作。我試過的第一件事就是設置它並在現有的數據庫中使用代碼,但那不起作用。然後我刪除了模式並使用defaultSizeOfBigDecimal集重新創建了模式。爲什麼這樣的行爲 –

+0

Squeryl不處理模式演變。沒有一種方法可以實現這一點。搜索Squeryl列表,你可以找到更多的信息和外部庫的建議。 –

+0

但這是一個初始的模式創建。我一直在創建一個新的數據庫模式,並且新的插入失敗。 –