得到了以下問題:如何在Grails中使用Oracle創建文件上傳?
我試圖在grails中創建一個simpel文件上傳功能。我剛剛創建了一個域名類,其中包含一個
byte[] rawFile
作爲屬性。 Grails爲我做了大部分休息。它在開發環境中適用於標準hsqldb。
然後我將它部署到配置了oracle db(瘦驅動程序)的服務器上。除了文件上傳以外,其他所有的東西都可以很好的與oracle db配合使用對於文件上傳我得到了(據我記得)
的SQLException:ORA-01461:只能用於插入綁定一個LONG值到LONG
我嘗試了幾種方法來解決它(包括一些blob的列映射和使用java.sql.blob而不是byte []),但沒有任何真正的工作,我走了一個方向,我的代碼不會再獨立於數據庫。
谷歌並沒有真正幫助我,我的聖書也沒有幫助。
保存文件到磁盤並不是一個好的解決方案,我認爲。
因此,這裏是我的問題:
如何創建在與甲骨文工作Grails的文件上傳?
更新:獲得了一些額外的信息。用Oracle的XE版本管理重現問題:
Hibernate爲rawFile創建一個VARBINARY(255)列。所以我試圖上傳一個4字節的文件,它的工作。
然後,我手動將該列的類型更改爲「blob」,並使用更大的文件。
我加入
static mapping = {
columns {
rawFile type:'blob'
}
}
我的域類和它停止工作:
錯誤errors.GrailsExceptionResolver - [B不能轉換到的java.sql.Blob 的java.lang。 ClassCastException異常:[B不能轉換到的java.sql.Blob
:-(
太棒了!這似乎做了把戲! – rdmueller 2011-01-10 09:57:24
所以這不是一個解決方案!我有這樣的問題,如果我不設置字段的類型blob,在oracle數據庫中字段類型設置爲LONG。我想知道這怎麼能被認爲是正確的答案和好的解決方案。 :) – emilan 2012-10-08 09:00:39