对The method createBlob() is undefined for the type Hibernate异常的解决办法

项目中经常用到上传图片,上传后有两种保存方式:一种是以二进制流的形式保存到数据库中,数据库中的字段名定义为image;第二种是将图片保存到服务器上的某一文件夹下

,然后在数据库里存储一列该图片的保存路径。

对于第一种hibernate4之前的版本的处理方式是这样的,将实体中图片字段定义为Blob类型的,数据库中映射成image类型的,然后往实体中写入的时候如下:

FileInputStream inputStream = new FileInputStream(file);
Blob blob = Hibernate.createBlob(inputStream);
cardInfo.setPhotoFile(blob);
但是当项目升级到hibernate4之后,因为hibernate4已经弃用了createClob和createBlob,所以如果仍然用上面的方式就会报题目中出现的错误,即“The method createBlob() is undefined for the type Hibernate”,如何解决这一问题呢,我们可以通过spring提供的基础工具类fileCopyUtils来解决这个问题,简单实用。spring对这个类的定义是这样的

Simple utility methods for file and stream copying.All copy methods use a block size of 4096 bytes,and close all affected streams when done.

Mainly for use within the framework,but also useful for application code.

我们通过 FileCopyUtils 的 copyToByteArray(File in) 方法就可以直接将文件内容读到一个 byte[] 中;另一个可用的方法是 copyToByteArray(InputStream in),它将输入流读取到一个 byte[] 中。废话少说,直接上解决方法:

首先是将实体中图片字段定义为二进制一维数组,如:private byte[] photoFile,该字段在数据库中映射的字段类型仍然是image类型的,然后你就可以轻松地通过下面这句话实现将图片文件写入到实体里了:

byte[] fileArray = org.springframework.util.FileCopyUtils.copyToByteArray(file);
cardInfo.setPhotoFile(fileArray);


.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值