我需要使用Grails将文件存储在数据库中。所以,你知道我怎么做吗?我应该在域类中使用哪种数据类型(byte []可能是一种解决方案)?
答案 0 :(得分:7)
请参阅Grails User Guide中有关上传文件的章节。也可以使用java.sql.Blob作为二进制内容的类型(在处理大文件时更可取。)
答案 1 :(得分:5)
或者,将文件存储在磁盘上,并将其路径存储在数据库中。在磁盘上访问该文件通常比在db中访问文件更快。但当然,这实际上取决于您在应用程序中的需求。但要注意这个替代方案。
答案 2 :(得分:3)
在使用列映射更新或生成数据库时,可以强制域对象使用特定类型:
byte[] orgFile
static mapping = {
columns {
orgFile type:'blob'
}
}
到目前为止,这对我有用;)
答案 3 :(得分:2)
我遇到了同样的问题。我需要做的就是转到数据库(Oracle)并将列类型从RAW更改为Blob。 (实际上我必须删除该列,然后创建一个新列)。 我无法找到如上所述使用“java.sql.Blob”的方法。我发现了这个this (converting from bytes to Blob),但它看起来有点复杂。
答案 4 :(得分:0)
我最近在域类中使用byte []来存储文件,它工作正常,直到我将我的应用程序从“HSQLDB”移动到“Oracle Express”。 在Oracle上,byte []被映射到一个原始对象而不是blob ...(不确定究竟是什么错误)并且我最终通过使用java.sql.blob来解决问题