Java Hibernate在插入/更新blob时使用两倍于文件大小的查询
我正在使用MySQL和Hibernate将上传的文件保存到数据库中。将文件转换为字节数组,作为简单实体的字段:Java Hibernate在插入/更新blob时使用两倍于文件大小的查询,java,mysql,hibernate,Java,Mysql,Hibernate,我正在使用MySQL和Hibernate将上传的文件保存到数据库中。将文件转换为字节数组,作为简单实体的字段: @实体 @表(name=“TestBlob”) 公共类测试块{ @身份证 @列(name=“id”) @GeneratedValue(策略=GenerationType.AUTO) 私有int-id; @高球 @列(name=“file”) 私有字节[]文件; 公共字节[]getFile(){ 返回文件; } 公共无效设置文件(字节[]文件){ this.file=文件; } } 然
@实体
@表(name=“TestBlob”)
公共类测试块{
@身份证
@列(name=“id”)
@GeneratedValue(策略=GenerationType.AUTO)
私有int-id;
@高球
@列(name=“file”)
私有字节[]文件;
公共字节[]getFile(){
返回文件;
}
公共无效设置文件(字节[]文件){
this.file=文件;
}
}
然后,当我尝试运行以下代码时:
@覆盖
公共void addBlob(TestBlob t){
System.out.println(“尝试上载大小为:+t.getFile().length的文件”);
Session Session=sessionFactory.getCurrentSession();
session.save(t);
}
@凌驾
公共void updateBlob(TestBlob t){
System.out.println(“尝试上载大小为:+t.getFile().length的文件”);
Session Session=sessionFactory.getCurrentSession();
会话.saveOrUpdate(t);
}
我得到这个输出:
Trying to upload file with size:8663040
Hibernate:
insert
into
TestBlob
(file)
values
(?)
...
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (17326125 > 16777216).
我找到的唯一相关帖子是与Postgre相关的帖子。关于我的代码,有什么我可以修改的吗?或者这是我需要知道的一个奇怪的怪癖吗
编辑:需要我将文件保存在blob中。您需要配置MySQL服务器以处理更大的数据包大小。有关更多信息,请参阅以下MySQL文档:
如果您使用Preparedstatement并且有setBytes,那么doublesize的问题就存在了,因为Mysql驱动程序的行为使大小加倍。请改用setBinaryStream。我认为最好将文件移出数据库,只将指向数据库中文件的链接放到数据库中