无法使用JPA将java.sql.BLOB持久化到oracle BLOB中

时间:2012-12-28 20:23:29

标签: java jpa oracle11g blob openjpa

我试图使用JPA(2.0)将图像保存为oracle数据库(11g)中的blob

以下是我的实体类

@Entity
@Table(name="MyTable")
public class MyEntity implements Serializable {

@Column(name="IMAGE_BLOB")
private  Blob imageBlob;

public void setImageBlob(Blob imageBlob) {
this.imageBlob = imageBlob;
}

public Blob getImageBlob() {
return imageBlob;
}

}

以下是我尝试设置blob的代码

InputSteram fis = new FileInputStream("C://folder1/folder2/image1.jpg");
byte[] imageByteArray= IOUtils.toByteArray(fis);

Blob imageBlob = new SerialBlob(imageByteArray);

MyEntity myEntity = new MyEntity();
myEntity.setImageBlob(imageBlob ).

当我运行上面的代码片段并将MyEntity持久存储到数据库中时,我看到除了显示为null的IMAGE_BLOB列值之外,所有值都在数据库中正确保存,它会抛出任何异常。我还验证了我试图设置的imageBlob不是空的。

任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

@LOB  
@Column(name="IMAGE_BLOB")  
private  byte[] imageBlob;

它运行良好,我也在Oracle DB中完成了它。因此,如果你得到ClassCastException,那么你的Java代码就会出现问题。