Java 将 Byte[] 转换为 Blob
Java Convert Byte[] into Blob
我知道有很多关于如何执行此操作的帖子,但我已经尝试了他们的解决方案,每次我都遇到错误导致我无法编译,我不确定为什么。这些是我尝试过的解决方案。
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);
我收到错误消息
Caused by: org.hibernate.MappingException: Could not determine type for: com.mysql.cj.jdbc.Blob, at table: post, for columns: [org.hibernate.mapping.Column(image)]
这是我的 class
private Blob image;
public Blob getImage(String string) {
return image;
}
public void setImage(Blob image) {
this.image = image;
}
所以我不确定这里还有什么地方可以继续,因为似乎没有任何效果。以防万一我使用存储库作为我的数据库连接,并且我正在尝试将用户输入的多部分文件保存到我的数据库中。
检查数据库中列的大小。似乎它设置为 varbinary(100)
之类的东西,而您正在尝试 post 字节长度大于字段限制的东西。例如。你的字段是 varbinary(124)
。因此错误??
我知道有很多关于如何执行此操作的帖子,但我已经尝试了他们的解决方案,每次我都遇到错误导致我无法编译,我不确定为什么。这些是我尝试过的解决方案。
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);
我收到错误消息
Caused by: org.hibernate.MappingException: Could not determine type for: com.mysql.cj.jdbc.Blob, at table: post, for columns: [org.hibernate.mapping.Column(image)]
这是我的 class
private Blob image;
public Blob getImage(String string) {
return image;
}
public void setImage(Blob image) {
this.image = image;
}
所以我不确定这里还有什么地方可以继续,因为似乎没有任何效果。以防万一我使用存储库作为我的数据库连接,并且我正在尝试将用户输入的多部分文件保存到我的数据库中。
检查数据库中列的大小。似乎它设置为 varbinary(100)
之类的东西,而您正在尝试 post 字节长度大于字段限制的东西。例如。你的字段是 varbinary(124)
。因此错误??