当前位置: 首页 > 面试题库 >

如何在grails中创建与Oracle兼容的文件上传?

宗建章
2023-03-14
问题内容

有以下问题:

我试图在grails中创建simpel文件上传功能。我刚刚创建了一个带有

byte[] rawFile

作为财产。Grails为我完成了其余的大部分工作。对于开发环境中的标准hsqldb来说,它运行良好。

然后,我将其部署到配置了oracle db(瘦驱动程序)的服务器上。除了文件上传外,其他所有内容都可以在oracle
db中正常工作。对于文件上传,我得到了(据我所记得)

SQLException:ORA-01461:只能将LONG值绑定以便插入到LONG中

我尝试了几种方法来修复它(包括一些到blob的列映射,并使用java.sql.blob而不是byte
[]),但没有任何实际效果,并且我朝着不再与数据库无关的方向发展。

Google并没有真正帮助我,我的grails书籍也没有帮助。

我认为将文件保存到磁盘不是一个好的解决方案。

所以这是我的问题:

如何在grails中创建与Oracle兼容的文件上传?

更新 :有一些其他信息。设法重现了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

:-(


问题答案:

与其将类型设置为blob,不如尝试增加maxSize约束:

static constraints = {
    rawFile(maxSize: 20 * 1024 * 1024) // 20 MBs
    // ...
}


 类似资料:
  • 我用AnyLogic8.7.6创建了一个模型,但我需要在更旧的(专业)版本7.0.2上继续它。我需要旧版本阅读,更重要的是,允许我修改它。谢谢

  • 我正在尝试创建用于AWS IoT的自签名X.509证书。我可以理解它与普通的OpenSSL证书没有什么不同,但我偶然发现AWS创建的PEM文件有些不同。因为我是OpenSSL新手,所以我无法找出我缺少了什么 我使用下面的命令创建私钥、CSR和服务器证书 openssl req-newkey rsa: 2048-new-节点-keyoutkey.pemcsr.pem openssl x509-req

  • 我正在尝试部署一个java api,它基本上带有。docker容器中的war fie inside/tomcat/webapps/directory。我能够复制这本书。位于其中的Artifactory中的war文件。现在docker容器中的tomcat结构是:tomcat/webapps/api。war 问题是,在我将war文件复制到那里之后,我不知道java和tomcat是如何工作的,以便war

  • 问题内容: 直到11g版本(包括11g),Oracle中似乎都没有AUTO_INCREMENT的概念。 如何在Oracle 11g中创建行为类似于自动增量的列? 问题答案: 表定义: 触发定义: 更新: IDENTITY 列现在在Oracle 12c上可用: 或指定起始值和增量值,也防止任何插入到标识列(GENERATED ALWAYS)中(同样,仅适用于Oracle 12c +) 另外,Orac

  • 在看另一个问题时,我意识到我不能通过头文件使用来自匿名名称空间的对象或函数,因为这会在类定义或内联函数中导致ODR冲突。如果是这种情况,那么是否可以安全地在函数或类中使用命名的或对象?例如,如果在下面的内部,那么它将是不安全的,但是使用静态链接的常量可以吗?