【发布时间】: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