java - 将对象转换为 blob (java.lang.ClassCastException : [B cannot be cast to java. sql.Blob)

标签 java

当我尝试使用 (Blob) 将 Oject 转换为 blob 时,出现 java.lang.ClassCastException: [B 无法转换为 java.sql.Blob 错误。

但是当我尝试使用以下代码进行转换并写入图像文件时,图像会损坏。

Blob blob = null;

        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ObjectOutput out = null;
        try {
          out = new ObjectOutputStream(bos);   
          out.writeObject(myObj);

          byte[] yourBytes = bos.toByteArray();

          //blob.setBytes(1, yourBytes );
          blob = new SerialBlob(yourBytes);
        } finally {
          out.close();
          bos.close();
        }

如何安全地将对象(保存为 Blob 的图像文件)转换为 Blob?

注意:由于要求,我只能获取从其他部分传递的对象。

最佳答案

你可以使用

如果您正在使用 hibernate

      Blob blob = Hibernate.createBlob(bytes, session); 

如果您使用 JDBC

       Blob blob = connection.createBlob();
       blob.setBytes(1, bytes);

关于java - 将对象转换为 blob (java.lang.ClassCastException : [B cannot be cast to java. sql.Blob),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15802070/

相关文章:

java - 尝试在 GAE 开发环境中使用 restFB 时出错

java - 键监听器与键绑定(bind)?

java - 使用自定义适配器更新 SQL 数据库和 ArrayList<>。

java - 'java.util.NavigableMap'类型的属性不能被 'Map'注入(inject)

java - 创建 SessionFactory 时出现错误

java - 如何使用 SimpleDateFormat 格式化我的日期?

java - Elasticsearch 客户端 maven 依赖

java - RSA key 对生成并存储到 keystore

java - 如何从 Spring Controller 启动 CommandLineRunner

java - 在哪里存储(Spring Boot)Java AWS 程序的 RSA 私钥