當我需要檢索訂單表中的某些信息時,jasper不能從PGmoney轉換爲double。我首先搜索谷歌,但沒有這個結果。賈斯珀報告:無法獲得字段'x'的值'org.postgresql.util.PGmoney'
你知道如何解決它嗎?
注:我使用PostgreSQL數據庫。
當我需要檢索訂單表中的某些信息時,jasper不能從PGmoney轉換爲double。我首先搜索谷歌,但沒有這個結果。賈斯珀報告:無法獲得字段'x'的值'org.postgresql.util.PGmoney'
你知道如何解決它嗎?
注:我使用PostgreSQL數據庫。
這是PostgreSQL money
類型was deprecated and should be avoided的幾個原因之一。奇怪newer versions of the same documentation don't show the deprecation warning但我and others不同意這一點,並認爲它的使用應該勸阻。
如果可能的話,改變你使用的模式numeric
相反,像numeric(17,2)
如果只想存儲整個數美分,或一些更精確的中間值。您將在HQL中與money
一起工作的噩夢,甚至Java的BigDecimal
類(通常用於映射numeric
字段)儘管它的算術語法非常笨拙,但仍然更好。
我會做一個ALTER TABLE blah ALTER COLUMN blahcol TYPE numeric(17,2) USING (regexp_replace(blahcol::text, '[$,]', '', 'g')::numeric);
而忘記如果我是你存在的money
類型。
您鏈接到的討論發生在2008年。版本9.1帶來了一些改進 - 解決了這些問題。 '增加對金錢分配的支持(Andy Balholm)','在金錢和數字之間添加支持(Andy Balholm)'並且'將int4和int8的投射支持添加到錢(Joey Adams)'。你從8.2手冊中引用的是在8.3改變之前:'將MONEY數據類型擴展到64位(D'Arcy Cain)這大大增加了支持的MONEY值的範圍。「因此,雖然我會使用'numeric'我也不明白爲什麼原則上應該避免「金錢」。 –
@ErwinBrandstetter嗯,當我看到演員問題等時,我不小心回到了舊版手冊。現在看起來好多了。我仍然沒有看到'優勢''金錢'帶來了什麼,但是肯定會更好。但是,使用查詢生成器等時,它的格式仍然可能會很痛苦,因爲它們通常都是關於最小公因分析特性的。 –
我想你就在那裏。正如我所說的,我也會使用'數字'。只是把事情的角度來看...... –
正如你可以閱讀[貨幣類型](http://www.postgresql.org/docs/9.0/interactive/datatype-money.html)後'regexp_replace'函數可以幫助你 –
謝謝亞歷克斯K.我修復它 – TPL
嗨亞歷克斯K,我有一個問題,我用hql語言來查詢數據,我讀了你給我的網頁,但它告訴我投錢給數字,然後加倍。但在hql中,我不能轉換爲數字或雙精度(絕對)。當我把它轉換爲字符串(錯誤)。 – TPL