【问题标题】:Inserting Multipart file in to Database将多部分文件插入数据库
【发布时间】:2014-02-15 09:46:02
【问题描述】:

我正在尝试借助以下代码更新 Oracle Db 中的文件

@RequestMapping(value = "/person/{personId}", method = RequestMethod.POST)
    public @ResponseBody String save(@RequestParam MultipartFile files,@PathVariable int personId,) throws IOException {

        byte [] bFile =files.getBytes();
        personService.uploadImageOnId(personId,bFile);
}

这是服务实现

@Override
public void uploadImageOnId(int personId,byte [] personImage) {
        entityManager.createNamedQuery("Person.uploadImageOnId")
                .setParameter("personId", personId).setParameter("personImage", personImage)
                .executeUpdate();

    }

实体

@Entity
@Table(name = "PERSON")
@NamedQueries({ 
@NamedQuery(name = "Person.uploadImageOnId", query = "UPDATE Person p SET p.personImage= :personImage WHERE p.personId= :personId" )

})
public class Person implements java.io.Serializable {
    @Column(name="PERSON_IMAGE")
        @Lob
        private byte[] personImage;

        public byte[] getPersonImage() {
            return personImage;
        }

        public void setPersonImage(byte[] personImage) {
            this.personImage = personImage;
        }
}

但出现以下错误

java.lang.ClassCastException: [B cannot be cast to [Ljava.lang.Object;

请指出我做错的地方。

【问题讨论】:

  • 哪个方法调用哪个实际参数会导致异常?
  • 如果在实体中使用 Byte 而不是 byte 会怎样?
  • @Smutje .setParameter("personImage", personImage) 这里是指向错误
  • 好吧 personImage 不是一个对象,所以可能是它,你可以尝试使用 Byte[] 吗?
  • @Pierre 得到同样的错误

标签: java spring hibernate jpa multipart


【解决方案1】:

参考Inserting byte[] array as blob in Oracle Database getting ORA-01460: unimplemented or unreasonable conversion requested,我建议不要将字节数组设置为值,而是将ByteArrayInputStream 包装您的数组。

【讨论】:

  • 我根据你的建议尝试了这个 .setParameter("personImage", new ByteArrayInputStream(personImage)) 但我遇到了例外
  • 我们不能在 createNamedquery 中使用 setBinaryStream
  • 还有其他方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
  • 2011-07-11
  • 1970-01-01
相关资源
最近更新 更多