【问题标题】:Java Convert Byte[] into BlobJava 将 Byte[] 转换为 Blob
【发布时间】:2021-05-25 04:16:51
【问题描述】:

我知道有很多关于如何做到这一点的帖子,但我已经尝试了他们的解决方案,每次我遇到一个错误,导致我无法编译,我不知道为什么。这些是我尝试过的解决方案。

        Blob blob = new javax.sql.rowset.serial.SerialBlob(bytes); 
        //next try
        Blob b = new SerialBlob(byteData);  

错误消息总是将 blob 类型更改为串行 blob。如果我将其更改为串行 blob,我会收到一条错误消息,指出字符串对于列来说太长。

如果我使用代码

        byte[] byteData = encodedImg.getBytes("UTF-8");//Better to specify encoding
        Blob blobs = (Blob) pprepo.createBlob();
       blobs.setBytes(1, byteData);

我收到错误消息

原因:org.hibernate.MappingException:无法确定类型:com.mysql.cj.jdbc.Blob,表:post,列:[org.hibernate.mapping.Column(image)]

这是我的课

    private Blob image;

   public Blob getImage(String string) {
   return image;
   }

   public void setImage(Blob image) {
   this.image = image;
   }

所以我不确定这里还有什么地方可以继续,因为似乎没有任何效果。以防万一我使用存储库作为我的数据库连接并且我试图将用户输入的多部分文件保存到我的数据库中。

【问题讨论】:

    标签: java encryption blob


    【解决方案1】:

    检查数据库中列的大小。似乎它设置为varbinary(100) 之类的东西,并且您正在尝试发布字节长度大于字段限制的内容。例如。你的字段是varbinary(124)。因此错误??

    【讨论】:

    • 我已将列更改为 varbinary(124) 并将其转换为 Serialblob 后,我仍然收到错误消息。我使用了打印语句,Serialblob 的长度显然是 6?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2014-04-18
    • 2011-06-08
    • 2014-05-04
    • 1970-01-01
    • 2014-07-21
    相关资源
    最近更新 更多