【问题标题】:org.springframework.web.multipart.commons.CommonsMultipartFile cannot be cast to java.sql.Bloborg.springframework.web.multipart.commons.CommonsMultipartFile 不能转换为 java.sql.Blob
【发布时间】:2014-01-02 15:26:57
【问题描述】:

这行代码:

document.setContent((Blob) file);

正在抛出此错误:

org.springframework.web.multipart.commons.CommonsMultipartFile cannot be cast to java.sql.Blob

其中fileMultipartFile

Eclipse 不会从上面的“违规”代码行抛出任何警告消息。事实上,eclipse 添加了(Blob) 自己作为建议修复的一部分。

有没有其他方法可以快速轻松地将MultipartFile 转换为Blob

我已经解决这个问题好几天了,但无济于事。请参阅帖子 herehere。仅仅能够在一两行代码中将MultipartFile 转换为Blob 将是一个简单、优雅的解决方案,可以解决原本过于复杂的问题。

【问题讨论】:

  • @MichałRybak 目前,我正在使用 PDF 文件进行测试。有区别吗?
  • 可能没有,但我很好奇setContent 是否有任何重载版本,例如setContent(byte[]).

标签: java spring hibernate spring-mvc


【解决方案1】:

看看docsthis question
我想出的是使用byte[]

byte[] contents = file.getBytes();
Blob blob = new SerialBlob(contents);
document.setContent(blob);

【讨论】:

  • 谢谢。 +1 试图提供帮助。 System.out.println(document.getContent().length());显示在代码设置后调用 blob 时具有长度。但是应用程序没有将 blob 插入到数据库中。从技术上讲,我想您回答了我的问题,所以我会将其标记为已回答,但是请您看看我在上面的原始帖子中链接到的另外两个帖子吗?如果您能帮我完成这项工作,我将不胜感激,并在应用程序成功将文档插入数据库时​​将所有三个标记为已回答。
  • 我在一个相关问题上投入了大量资金。您介意看一下并提交答案吗?我会将巨额奖金奖励给提供有效解决方案的人。这是链接:stackoverflow.com/questions/20586865/…
  • 抱歉,目前我对 Hibernate 不太感兴趣。我已经阅读了您的其他问题,但恐怕我无能为力。我只能建议使用调试器来准确查看数据丢失的步骤。如果您还没有这样做,还可以考虑启用 Hibernate 日志记录以查看它执行的 SQL。
  • 感谢您的建议。我是一个自学成才的程序员,我不知道如何做你建议的事情。您愿意发布说明链接吗?
  • 阅读here 了解如何启用 Hibernate 显示 SQL。至于调试器,它取决于您的 Eclipse 版本,但您可以直接 google 并找到一些类似 this one 的文章。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 2018-02-10
  • 2023-03-22
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多