java - 无法使用 JPA 将 java.sql.BLOB 持久保存到 oracle BLOB 中

标签 java jpa oracle11g blob openjpa

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

下面是我的实体类

@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 不为空。

有人可以帮我解决这个问题吗?

最佳答案

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

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

关于java - 无法使用 JPA 将 java.sql.BLOB 持久保存到 oracle BLOB 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14075323/

相关文章:

java - 连接 Oracle DB 容器和 Java 应用程序容器 (Docker)

java - 如何通过servlet提交WordCount.jar到hadoop

java - 使用反射时出现空指针异常

java - JPQL (JPA) 搜索子字符串

java - 插入 "Duplicate entry ... for key PRIMARY"和 "Krakow"时为 "Kraków"

oracle - Oracle如何审计某个表的删除操作?

java - org.apache.jasper.JasperException : javax. el.PropertyNotFoundException:类 'java.lang.String' 没有属性 'user'

java - 两个迭代器抛出 ConcurrentModificationException

java - Hibernate validator 总是说集合为空

performance - 对于大于 32kb 的文件,BLOB 导出速度很慢